항목 19부터는 STL 연관 컨테이너(Associative Containers)에 대한 이야기이다. 어떻게 이해하는게 좋을까 고민하다가 한가지 묘안이 떠올랐다. 예로써 감을 잡는 방법을 쓴다. 연관컨테이너에서의 1. 상등(equality)은 "값이 같은가?" 이고, 동등(equivalence)는 "위치가 같은가?" 로 풀이가 된다. 2. 상등은(equality) operator== 으로 판별하고 동등(equivalence)은 operator 3. 말로 하자면, 상등한 값이냐?, 동등한 위치냐? 4. 상등(equality)은 "같다, 틀리다" 로 표현되고, 동등(equivalence)은 "크냐? 작냐?" 로 표현된다. 이 정도로 이야기를 하면 어느정도 이해가 될 것이다. 이게 왜 중요..
컨테이너 검색 결과
표준 STL에서 쓰레드 안전성을 갖춘 컨테이너가 없다는 것에 놀라지는 않는다. 나도 지금에서야 쓰레드 개념을 잡았으니.. 할말 없지 뭐, 지금은 다중 쓰레드 기반 프로그램이 많기 때문에, 이번 항목은 STL 컨테이너가 다중 쓰레딩 지원을 할수 있도록 요령을 가르쳐 준다. STL 컨테이너의 다중 쓰레드 지원 방법은 SGI(실리콘 그래픽스) 재정한 방식이 가장 좋다고 하고, 필자는 이중 두가지 핵심을 뽑아 말해 준다. 여러 쓰레드에서 읽는 것은 안전해야 한다.여러 쓰레드에서 다른 컨테이너에 쓰는 것은 안전해야 한다. 말처럼 쉽지만은 않기 때문에, 세부적인 기능(어떻게 해야 하는가?)에 어떤것을 두어야 할지 필자는 설명한다. 컨테이너의 멤버 함수를 호출하는 시간 동안 컨테이너에 락 걸기컨테이너가 만들어 내어 ..
이 이야기는 컨테이너에만 맞는 말이 아니라고 생각한다. 물론 STL 책이니 켄테이너에만 이야기 해야 한다고도 생각한다. ^^ 컨테이너에 독립적인 코드라 하면, 어떤 .. 컨테이너에도 적용 시킬수 있는 코드를 말한다. 그렇다면 독립적인 코드가 왜 환상인가? ... STL 컨테이너를 써본 사람은 알겠지만 각각 컨테이너마다 사용하는 iterator, 데이터 넣기, 빼기, 정렬하기, 검색하기 등.. 각 켄테이너에 맞는 코드가 따로 있기 때문이다. 그렇다면 어떻게 코딩해야 하는가? 컨테이너를 class 에 넣어 둔다. typedef 를 이용하여 컨테이너명을 재정의한다. 컨테이너에 접근 하려면 class 에 접근 하게 만든다. 이제 컨테이너를 바꾸게 바꾸어야만 할 때, 디버깅을 해야만 할때 이 class 의 컨테이..
new[] 관해서는 typedef가 독이지만, typedef 는 사실 여러 방면으로 쓸모가 많다. 나 같은 경우에는 .. 컨테이너 사용 할때, 컨테이너의 이터레이터를 줄이기 위해서 사용 하곤 한다. 하지만 typedef의 진정한 의미는 바로 따로 있다. 진정한 의미 C++ 에서의 typedef 는 가독성과 코드 수정을 한줄로 만들어 줄께와 같다. 여기서 가독성은 쉽게 이해가 가는데 C++ 에서의 코드 수정은 좀 갸우뚱 할 것이다. C++ 은 OOP 적으로 코딩이 가능한데, OOP의 꽃~ 캡슐화와 typedef 와 맞물리면 코드 수정이 엄청나게 간편해 진다. 예를 들어, 데이터를 관리하기 위해서 컨테이너를 골라야 했다. 대부분의 데이터가 마지막에 들어가고, 마지막에서 지워 진다는것을 알게됬고 나는 VECT..
최근댓글