1. Generic Programming and the C++ Standard Library

  1. Switching Streams

가독성을 중시하라. 간결하지만 이해하기 어렵고 유지보수하기 어려운 코드를 피하라. 난독화를 삼가라. 확장 가능성을 선호하라. 캡슐화를 선호하라. 고려사항들을 분리하라.

2. Predicates, Part 1: What remove() removes

remove()는 실제로 항목들을 지우지는 않는다. 옮길 뿐이다. erase와 같이 써야 한다.

3. Predicates, Part 2: Matters of State

STL 알고리즘의 비교 함수에 람다 함수를 적절히 잘 활용하자. 람다는 필요할 경우 주위 변수를 캡쳐할 수도 있다.

4. Extensible Templates: Via Inheritance or Traits?

트레잇을 이용하여 템플릿 인스턴스화 요소를 잘 활용하자.

5. Typename

typedef 대신 using을 사용하자. typename은 템플릿의 의존 타입을 위해 필요하지만 C++20에서는 필요성이 많이 줄었다.

6. Containers, Pointers, and Containers That Aren’t

std::vector<bool>은 컨테이너가 아닌, 섣부른 최적화의 결과물이다. 이걸 쓰지 말라.

7. Using vector and deque

std::vector를 기본으로 쓰라. std::vector<bool> 대신 std::deque<bool>을 쓰라.

8. Using set and map

연관 컨테이너에서 키가 삽입되었으면 그 키의 상대적 위치는 절대 바뀌어선 안 된다.

9. Equivalent Code?

매크로를 피하라. 이는 코드 이해를 어렵게 하고 유지보수를 어렵게 한다. 오버로드된 연산자는 항상 그 연산자의 의미에 맞게 동작시켜라.

10. Template Specialization and Overloading

템플릿 특수화와 오버로딩 룰을 잘 기억하라.

11. Mastermind

C++의 목표는 제로 코스트 추상화의 제네릭 프로그래밍이다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중