vector<array<long long,6>>a(k);
for(auto&x:a)
cin>>x[1]>>x[2]>>x[3]>>x[4],x[0]=(x[3]-x[1])*(x[4]-x[2]);
sort(begin(a),end(a));
이건 정상적으로 컴파일 되는데
vector<long long[6]>a(k);
for(auto&x:a)
cin>>x[1]>>x[2]>>x[3]>>x[4],x[0]=(x[3]-x[1])*(x[4]-x[2]);
sort(begin(a),end(a));
이건 컴파일 오류가 생기는 이유가 뭐임?
대충 찾아보니까 일반 배열이 CopyAssignable하지 않아서 생기는 문제같은데
sort에서 어디가 CopyAssignable이 필요한건지 모르겠음
벡터에서 배열 요소 꺼내서 비교하고 위치 바꾸면 그만인거 아님??
해당 댓글은 삭제되었습니다.
vector<int> 이런거 유효한 타입네임인데용.. sort빼면 정상적으로 실행됨
해당 댓글은 삭제되었습니다.
sort과정에서 a[0] = a[1]; 가 있는데 여기서 오류가 생긴다는 건가요?
와 그렇네요 ㄱㅅ합니다!
ㄹㅇ 컴파일 오류나네
헐 뭐지 그렇네요;
벡터 전용 swap 함수가 오버로드가 되어있어서 그런것같기도 하고.. 대입하는게 아니라 인덱스 자체를 스왑하는 느낌인가
https://en.cppreference.com/w/cpp/container/vector/swap2
std::array 는 배열이 아니라 구조체임