tofhddl9   3달 전

컴파일에러 내용은 다음과 같구요...

required from ‘_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<word*, std::vector<word> >]’

! required from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<word*, std::vector<word> >; _Size = int]’

! required from ‘void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<word*, std::vector<word> >]’

!error: passing ‘const word’ as ‘this’ argument of ‘bool word::operator<(const word&)’ discards qualifier

32번째 줄인 sort부분에서 에러가 나는데 비교연산을 잘못한건지.. 이유를 잘 모르겠어서 질문드립니다~

yukariko   3달 전

bool operator <(const word &a)를

bool operator <(const word &a) const로 바꿔보세요.

참고로 알고 계신건지도 모르겠지만

구조체안에 정적배열인 s가 들어있으면 정렬이 되지 않습니다.

C / C++ 에서는 구조체의 대입시 배열까지 전부 대입해주지 않기 때문입니다.

다만 예외적으로 char형의 배열은 대입을 지원해주긴 합니다.

가능하면 char형 배열을 string으로, 다른 정적배열은 vector로 바꾸는 것을 추천합니다.

tofhddl9   3달 전

yukariko님 감사합니다! 모르고 있던 점까지 배웠네요 ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.