[effective STL] 항목 17 : 용량 바꿔치지 묘수(swap)
2015. 12. 26. 23:45ㆍ프로그래밍/Effective STL
728x90
728x90
예시
100000명의 지원자를 담는 백터가 있다고 했을 때,
지원자가 줄어들때마다 백터에서 erase된다.
10명이 남게 되었을 때, 용량은 그대로 100000이다. 어떻게 해야하는가?
방법
swap을 통한 방법이다.
복사생성자를 이용하여 나오는 임시객체와 기존 객체를 스왑한다.
std::vector<int>(contestant)는 constestant로 복사생성자를 호출하여 임시객체를 반환하는데
이 임시 객체는 contestant의 사이즈만큼 복사 생성하고 이것을 기존의 constestant를 교환한다.
이는 STL에 구현한 개발자에 따라 용량 설정이 다르기 때문에 일정 바이트 이상으론 줄어들지 않을 수 있다.
728x90
반응형
'프로그래밍 > Effective STL' 카테고리의 다른 글
[effective STL] 항목 21 : 연관 컨테이너용 비교 함수는 ==에 대해선 false를 반환해야 한다. (0) | 2016.01.03 |
---|---|
[effective STL] 항목 20 : 연관 컨테이너에 포인터 넣을 때 비교 함수자 타입을 정해주기 (1) | 2015.12.27 |
[effective STL] 항목 18 : vector<bool> 쓰지마 (1) | 2015.12.26 |
[effective STL] 항목 16 : 기존 C API에 vector와 string 넘기기 (0) | 2015.12.26 |
[effective STL] 항목 15 : string은 여러 가지 방식으로 구현되어 있다. (0) | 2015.12.17 |
[effective STL] 항목 14 : 재할당 방지 reserve (0) | 2015.12.17 |
[effective STL] 항목 13 : 동적으로 할당된 배열보다는 vector와 string이 낫다. (1) | 2015.10.02 |