효과적인 콘테이너 요리법
- EffectiveSTL01 – 적재적소에 알맞은 컨테이너를 사용하자
- EffectiveSTL02 – 컨테이너에 독립적인 코드라는 환상을 조심하자
- EffectiveSTL03 – 복사(copy)는 컨테이너 안의 객체에 맞게 비용은 최소화하며, 동적은 정확하게 하자
- EffectiveSTL04 – size()의 결과를 0과 비교할 생각이라면 차라리 empty를 호출하자
- EffectiveSTL05 – 단일요소를 단위로 동작하는 멤버함수보다 요소의 범위를 단위로 동작하는 멤버함수가 더 낫다.
- EffectiveSTL06 – C++ 컴파일러의 어이없는 분석결과를 조심하자
- EffectiveSTL07 – new로 생성한 포인터의 컨테이너를 사용할 때에는 컨테이너가 소멸되기 전에 delete하는 일을 잊지 말자
- EffectiveSTL08 – auto_ptr의 컨테이너는 절대로 만들지 말자.
- EffectiveSTL09 – 데이타를 삭제할 때에도 조심스럽게 선택할것이 많다.
- EffectiveSTL12 – STL 컨테이너가 쓰레드 안정성에 대한 기대는 현실에 맞추어 가자.
vector 와 string
- EffectiveSTL13 – 동적으로 할당한 배열보다는 vector와 string이 낫다.
- EffectiveSTL14 – reserve는 필요 없이 메모리가 재할당되는 것을 막아 주다.
- EffectiveSTL15 – 잊지말자 string 은 여러 가지 방식으로 구현되어 있다는 사실을…
- EffectiveSTL16 – 기존의 C API에 vector와 string을 넘기는 방법을 알아두자
- EffectiveSTL17 – 쓸데없이 남은 용량은 “바꿔치기(swap)묘수”를 써서 업애 버리자
- EffectiveSTL18 – vector<bool> 보기를 돌같이 하자
STL 연관 컨테이너
- EffectiveSTL19 – 상등관계와 동등관계의 차이를 파악하자
- EffectiveSTL20 – 포인터를 저장하는 연관컨테이너에 대해서는 적합한 비교(비교 함수자) 타입을 정해주자
- EffectiveSTL21 – 연관컨테이너용 비교 함수는 같은 값에 대해 false를 반환해야 한다.
- EffectiveSTL22 – set과 multiset에 저장된 데이터 요소에 대해 키(key)를 바꾸는 일은 피하자
- EffectiveSTL23 – 연관 컨테이너 대신에 정렬된 vector를 쓰는 것이 좋을 때가 있다.
- EffectiveSTL24 – map::operator[] 나 map::insert는 효율 문제에 주의하여 선택하자.
- EffectiveSTL25 – 현재는 표준이 아니지만, 해쉬 컨테이너에 대해 충분히 대비해 두자.
반복자
- EffectiveSTL26 – const_iterator 나 reverse_iterator, const_reverse_itertor도 좋지만 역시 쓸만한 것은 iterator 이다.
- EffectiveSTL27 – const_iterator를 iterator로 바꾸는 데에는 distance와 advance를 사용하자.
- EffectiveSTL28 – reverse_iterator에 대응되는 기점 반복자(base iterator)를 사용하는 방법을 정확하게 이해하자.
- EffectiveSTL29 – 문자 단위의 입력에는 istreambuf_iterator의 사용도 적절하다.
알고리즘
- EffectiveSTL30 – 알고리즘의 데이타 기록 범위는 충분히 크게 잡자.
- EffectiveSTL31 – 정렬시의 선택 사항들을 제대로 파악해보자.
- EffectiveSTL32 – 요소를 정말로 제거하고자 한다면 remove 류의 알고리즘에는 꼭 erase를 붙여 사용하자.
- EffectiveSTL33 – remove와 비슷한 알고리즘을 포인터의 컨테이너에 적용할 때에는 각별히 조심하자.
- EffectiveSTL34 – 정렬된 범위에 대해 동작하는 알고리즘이 어떤 것들인지 파악해 두자.
- EffectiveSTL35 – 대소문자를 구분하지 않는 문자열 비교는 mismatch 아니면 lexicographical_compare를 써서 간단하게 구현할 수 있다.
- EffectiveSTL36 – copy_if를 적절히 구현해 사용하자.
- EffectiveSTL37 – 범위 내의 데이터 값을 요약하거나 더하는 데에는 accumulate 나 for_each를 사용하자.
함수자, 함수 객체, 함수, 기타 등등
- EffectiveSTL38 – 함수자 클래스는 값으로 전달되도록 설계하자.
- EffectiveSTL39 – 술어 구문은 순수 함수로 만들자.
- EffectiveSTL40 – 함수자 클래스는 어댑터 적용이 가능하게(adaptable) 만들자.
- EffectiveSTL41 – ptr_fun, mem_fun, mem_fun_ref 의 존재에는 분명한 이유가 있다.
- EffectiveSTL42 – less<T>는 operator< 의 의미임을 꼭 알아두자.
STL 프로그래밍을 더 재미있게 해주는 팁 모음
- EffectiveSTL43 – 어설프게 손으로 작성한 루프보다 알고리즘이 더 낫다.
- EffectiveSTL44 – 같은 이름을 가진 것이 있다면 일반 알고리즘 함수보다 멤버 함수가 더 낫다.
- EffectiveSTL45 – count, find, binary_search, lower_bound, upper_bound, 그리고 equal_range 를 제대로 파악해 두자.
- EffectiveSTL46 – 알고리즘의 매개 변수로는 함수 대신 함수 객체가 괜찮다.
- EffectiveSTL48 – 용도에 맞는 헤더를 항상 #include 하자
- EffectiveSTL50 – STL 관련 웹 사이트와 친구하자