컨테이너 독립적인코드라는 환상 조심!(effective STL 02)

2015. 8. 25. 18:45프로그래밍/Effective STL

728x90
728x90

STL은 일반화(generalization)에 기초를 두고 만든 프로그래밍 장치.

데이터 집합 - 컨테이터(데이터의 타입은 매개 변수화) 일반화

함수 - 알고리즘(반복자의 타입은 매개 변수화) 일반화

포인터 - 반복자(포인터가 가리키는 객체의 타입은 매개 변수화) 일반화


컨테이너 타입은 시퀀스와 연관 컨테이너로 일반화.

표준 연속 메모리 컨테이너 - 임의 접근 반복자를 쓸 수 있다.

노드 기반 컨테이너 - push_back, push_front 지원.

연관 컨테이너 - 로그 시간 복잡도를 가진 lower_bound, upper_bound, equal_range 지원.


반복자, 포인터, 참조자를 무효화시키는 방식이 컨테이너마다 다르다.

독립적인 코드라고 좋은 것이 아니다. STL 컨테이너는 각자 자신만의 장점과 약점을 가진다.


하지만 경우에 따라 컨테이너를 바꿔야 한다면?

typedef를 이용하여 캡슐화 한다.

1
2
typedef vector<type> container;
typedef container::iterator containerIter;
cs


평소 사용하던 typedef가 이렇게 깊은 의미가 있을줄이야..........................

728x90
반응형