• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

코드를 똑같이 실행시켰는데 자꾸 에러가 뜹니다

21.02.16 13:01 작성 조회수 198

0

#include<iostream> 
#include<vector>
#include<algorithm> 
using namespace std;
struct Loc{ // 구조체 선언 
	int x, y, z; // 구조체 멤버 선언 
	Loc(int a, int b, int c){ // 구조체 생성자 선언(초기화하기 위햬) 
		x=a;
		y=b;
		z=c;
	}
	// 크기를 비교하는 연산자, 연산자 오버로딩 함, 두 객체의 크기를 비교함, 정렬기준을 잡음 
	bool operator<(const Loc &b)const{ // 구조체를 주소로 받음, b를 통해서 원본을 바꿈, 이를 차단하기 위해서 const 선언 
		// operator를 const로 선언하여 x,y,z를 변경할 수 없게 함
		return x<b.x; // opreator에 있어서 호출한 객체 x는 앞에 Loc &b해서 넘어온 인자로 넘어온 객체는 뒤에 그리고 앞에것을 작은것 뒤에것을 큰 걸로 정렬을 하게끔 오름차순으로 정렬함 
	}
}; 
int main(){
	// freopen("input.txt","rt",stdin);
	vector<Loc> XY; // 구조체형 vector 선언
	XY.push_back(Loc(2, 3, 5));
	XY.push_back(Loc(3, 6, 7));
	XY.push_back(Loc(2, 3, 1));
	XY.push_back(Loc(5, 2, 3));
	XY.push_back(Loc(3, 1, 6)); // 구조체 생성자 활용하여서 그 값을 넣음
	sort(XY.begin(),XY.end()); // 정렬을 시킴, x를 기준으로 구조체 객체를 정렬시킴, 즉 2, 3, 5에서의 x 값 2의 값으로 정렬함 뒤의 값은 무관함 
	for(auto pos:XY) cout << pos.x << " " << pos.y << " " << pos.z << endl;
	return 0;
}                         

이렇게 코드를 똑같이 쳤는데 컴파일 에러가 뜹니다

에러의 내용이 [Error] 'pos' does not name a type이라고 뜨는데 선생님 코드와 동일한데 제 코드에는 왜 에러가 뜨는지 모르겠습니다

답변 1

답변을 작성해보세요.

1

안녕하세요^^

제 컴퓨터에서는 위 코드가 정상으로 작동합니다.  만약 DEV-C++를 쓰시면 컴파일러를 업해보시는 게 좋을 것 같습니다.

컴파일러 업하는 방법은 섹션5의 첫번째 영상에서 소개하고 있습니다.