티스토리 툴바


Effective STL2011/09/15 00:28

set<string *> ssp;
ssp.insert(new String("Anteater"));
ssp.insert(new String("Wombat"));
ssp.insert(new String("Lemur"));
ssp.insert(new String("Penguin"));

이렇게 되면 set은 내부적으로 문자열을 참고하는게 아니고 string *(포인터) 자체의 값을 참고한다...
즉, 정렬 같은걸 해도 포인터 자체의 값으로 정렬한다는 소리...

해결법은?

set<string *> ssp; 는
set<string *, less<string *>> ssp; 의 형태이며, 이것은 다시
set<string *, less<string*>, allocator<string *>> ssp; 이렇게 된다.
이번 항목에서는 할당자는 관심사가 아니므로 무시.

즉 less라는 비교 함수자 클래스를 직접 만들어야 한다.

string * 포인터를 매개 변수로 받아, 이 포인터가 가리키는 string끼리 비교 후 bool을 리턴~
Posted by 채팅