책 정리/Effective STL
항목 2: "컨테이너에 독립적인(container-independent) 코드"라는 환상을 조심하자.
최익필
2008. 7. 12. 21:31
이 이야기는 컨테이너에만 맞는 말이 아니라고 생각한다. 물론 STL 책이니 켄테이너에만 이야기 해야 한다고도 생각한다. ^^
컨테이너에 독립적인 코드라 하면, 어떤 .. 컨테이너에도 적용 시킬수 있는 코드를 말한다. 그렇다면 독립적인 코드가 왜 환상인가? ... STL 컨테이너를 써본 사람은 알겠지만 각각 컨테이너마다 사용하는 iterator, 데이터 넣기, 빼기, 정렬하기, 검색하기 등.. 각 켄테이너에 맞는 코드가 따로 있기 때문이다.
그렇다면 어떻게 코딩해야 하는가?
컨테이너를 class 에 넣어 둔다.
typedef 를 이용하여 컨테이너명을 재정의한다.
컨테이너에 접근 하려면 class 에 접근 하게 만든다.
이제 컨테이너를 바꾸게 바꾸어야만 할 때, 디버깅을 해야만 할때
이 class 의 컨테이너에 접근 하는 곳만 수정하면 그나마 쉽게 컨테이너를 바꿀수 있다.
물론 정확하게 판단하여 정확한 컨테이너를 골라 정확한 코딩을 한다면, class 에 넣지 않아도 되지만, .. 어디 그게 되야 말이지, ....
컨테이너에 독립적인 코드라 하면, 어떤 .. 컨테이너에도 적용 시킬수 있는 코드를 말한다. 그렇다면 독립적인 코드가 왜 환상인가? ... STL 컨테이너를 써본 사람은 알겠지만 각각 컨테이너마다 사용하는 iterator, 데이터 넣기, 빼기, 정렬하기, 검색하기 등.. 각 켄테이너에 맞는 코드가 따로 있기 때문이다.
그렇다면 어떻게 코딩해야 하는가?
컨테이너를 class 에 넣어 둔다.
typedef 를 이용하여 컨테이너명을 재정의한다.
컨테이너에 접근 하려면 class 에 접근 하게 만든다.
이제 컨테이너를 바꾸게 바꾸어야만 할 때, 디버깅을 해야만 할때
이 class 의 컨테이너에 접근 하는 곳만 수정하면 그나마 쉽게 컨테이너를 바꿀수 있다.
물론 정확하게 판단하여 정확한 컨테이너를 골라 정확한 코딩을 한다면, class 에 넣지 않아도 되지만, .. 어디 그게 되야 말이지, ....