티스토리 뷰
프로그래밍/C C++
Item20 : Specify comparsion types for associative conatainers of poniters
Chaed 2018. 5. 13. 23:50이번편은 컨테이너의 포인터 타입에 대해 비교타입을 특정하라입니다.
set이나 map과 같은 associative container들은 항상 정렬상태를 유지하는 특징을 갖고 있습니다.
이때 정렬상태는 기준이 되는 특정 함수를 통해 비교를 통해 상태를 유지합니다.
set의 생성자함수 정의를 보면 알 수 있지만
비교를 위한 함수를 생성자를 선택하지 않으면 내부적으로 less<T>를 함수포인터로 갖게 됩니다.
less는 별다른 동작 없이 < 연산만을 하여 그 결과를 반환합니다.
하지만 T가 pointer type인경우는 어떻게 될까요?
결론은 포인터 주소를 비교하게 되게 때문에 원하는 대로 정렬이 되지 않습니다.
less<T*>를 한다해도 역시 *T 로 비교하지 않는 이상 의미가 없구요
따라서 사용자 정의 함수를 비교함수로 하게끔 해야합니다.
'프로그래밍 > C C++' 카테고리의 다른 글
The story behind printf 1편 (0) | 2019.01.22 |
---|---|
gcc와 msvc에서 range-based for loop(범위 기반 반복문)사용의 주의점. (0) | 2018.05.22 |
Item 19: Understand the difference between equality and equivalence (0) | 2018.04.17 |
Item 17 : Use "Shrink to fit" to trim excess capacity (0) | 2018.02.24 |
item 16 : Know how to pass vector and string data to legacy APIs. (0) | 2018.01.31 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- regex
- C++
- linux
- Spring
- 코드잼
- yiruma
- 악보
- Codejam
- 사천
- 드럼
- python
- 중국여행
- 카카오 공채
- kernerl
- Algorithm
- 여행
- 알고리즘
- Pointer
- 문자열
- 피아노
- cpp
- 이루마
- STL
- C language
- peram jam
- compile
- 정규표현식
- link
- 중국
- printf
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함