이번편은 컨테이너의 포인터 타입에 대해 비교타입을 특정하라입니다. set이나 map과 같은 associative container들은 항상 정렬상태를 유지하는 특징을 갖고 있습니다. 이때 정렬상태는 기준이 되는 특정 함수를 통해 비교를 통해 상태를 유지합니다. set의 생성자함수 정의를 보면 알 수 있지만 비교를 위한 함수를 생성자를 선택하지 않으면 내부적으로 less를 함수포인터로 갖게 됩니다. less의 구현 less는 별다른 동작 없이 < 연산만을 하여 그 결과를 반환합니다. 하지만 T가 pointer type인경우는 어떻게 될까요? 결론은 포인터 주소를 비교하게 되게 때문에 원하는 대로 정렬이 되지 않습니다. less를 한다해도 역시 *T 로 비교하지 않는 이상 의미가 없구요 따라서 사용자 정의 ..
c++에서 stl에 있는 associative container들은 객체나 값을 비교하는데 있어 비교를 이용하여 원하는 값을 찾거나 비교합니다. associative container에는 set, map이 존재합니다. 여기서 insert, find, erase등의 멤버함수들은 원하는 값을 찾거나 존재여부를 탐색하는데 앞서 언급한바와 같이 비교를 이용합니다. 이때 비교를 위해서 이번장의 주제이기도 한 equailty와 equlvalence를 이해 할 필요가 있습니다. 사실 설명에 앞서 책에서 내용과 달리 현재 std에서는 연관 컨테이너에서 크게 equality를 사용하지 않는것을 보입니다. 우선 더 깊은 설명 이전에 용어 설명을 하면 다음과 같습니다. equailty = 상등관계 c++에서는 opeator..
책에서 원제목은 Use "the swap trink" to trim excess capacity입니다. 책에서 소개된 swpa전략을 이용하면 실제 컨테이너에서 담겨 있는 객체의 크기(size)보다 Capacity가 크게 잡혀 있는경우 이를 size에 맞게 줄일 수 있는것으로 소개 되어 있습니다. 하지만 책이 쓰일 당시는 C++11이 나오기 이전이있기에 이러한 우회 전략이 소개되었지만 C++11이상부터는 shrink_to_fit 함수를 이용하여 size에 맞게 컨테이너의 크기를 간편하고 효율적으로 줄일 수 있습니다. 다음 URL을 참고하세요. http://www.cplusplus.com/reference/vector/vector/vector/
- Total
- Today
- Yesterday
- Codejam
- 악보
- 드럼
- compile
- 코드잼
- 알고리즘
- cpp
- Pointer
- peram jam
- kernerl
- 이루마
- 사천
- C language
- regex
- 카카오 공채
- Algorithm
- 중국
- 여행
- 문자열
- 정규표현식
- printf
- yiruma
- 피아노
- link
- 중국여행
- python
- C++
- linux
- Spring
- STL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |