STL 컨테이너들은 객체를 복사하여, 데이터를 쌓아둔다. 만약 기본자료형이 아닌 클래스 객체형이라면, 반드시 복사 생성자와 operator = 을 꼭 만들어 두어야만 켄터에너에 순풍 순풍 넣을수 있다. (암시적 생성자와 operator= 도 있다.) 이런 컨테이너에 한가지 문제점이 지적되었다. 사용자 왈 : "만약 30Byte 짜리 데이터 10만개를 넣는다면, 너무 많은 비용을 지불하는게 아니냐?" 이 때문에 크게 두가지 해결 방법이 나오게 된다. 첫째, 포인터를 넣어 복사 비용을 줄이자. 사용자는 신나게 컨테이너에 포인터를 넣기 시작하지만, 컨테이너 왈 : "리소스 해체 의무는 너가 저야 한다~" .. 결국 사용자는 울며 겨자먹기로 컨테이너에 포인터를 넣고, 힘들게 리소스 해체도 하게 된다. 이렇게 되..
책 정리/Effective STL 검색 결과
이 이야기는 컨테이너에만 맞는 말이 아니라고 생각한다. 물론 STL 책이니 켄테이너에만 이야기 해야 한다고도 생각한다. ^^ 컨테이너에 독립적인 코드라 하면, 어떤 .. 컨테이너에도 적용 시킬수 있는 코드를 말한다. 그렇다면 독립적인 코드가 왜 환상인가? ... STL 컨테이너를 써본 사람은 알겠지만 각각 컨테이너마다 사용하는 iterator, 데이터 넣기, 빼기, 정렬하기, 검색하기 등.. 각 켄테이너에 맞는 코드가 따로 있기 때문이다. 그렇다면 어떻게 코딩해야 하는가? 컨테이너를 class 에 넣어 둔다. typedef 를 이용하여 컨테이너명을 재정의한다. 컨테이너에 접근 하려면 class 에 접근 하게 만든다. 이제 컨테이너를 바꾸게 바꾸어야만 할 때, 디버깅을 해야만 할때 이 class 의 컨테이..
컨테이너란? 무엇인가를 담을 수 있는 공간 으로 봐도 될듯 싶다. 왜 적재적소에 사용 해야 하나? 컨테이너마다 적재하는 방법에 차이를 두고 있기 때문이다. 컨테이너는 어떤 종류가 있나? 여러것들이 있지만 표준 STL만 다룬다루도록 하고, 크게 시퀸스(sequence) 컨테이너( vector, string, deque, list ) 와 연관(associative) 컨테이너( set, multiset, map, multimap )로 나눌수가 있다. 이 책에선 어떨때 어떤 컨테이너를 선택하는지 질문 형식으로 유도 하고 있다. 그 질문을 적어 본다. 1. 컨테이너의 아무 위치에 요소를 삽입할 수 있어야 하나? 맞다면 시퀸스 컨테이너 중에서 선택해야 한다. 2. 컨테이너 내의 요소들의 순서 결정에 직접 관여하고 ..
# 정리가 끝날때 마다 링크를 한개씩 추가 시킨다. 책 : Effective STL 저자 : 스캇 마이어스(Scott Meyers) 옮김 : 곽용재(http://www.kwak101.pe.kr/) Chapter 1 효과적인 컨테이너(Container) 요리법 항목 1 : 적재적소에 알맞은 컨테이너를 사용하자 항목 2 : "컨테이너에 독립적인(container-independent) 코드"라는 환상을 조심하자 항목 3 : 복사(Copy)는 컨테이너 안의 객체에 맞게 비용은 최소화하며, 동작은 정확하게 하자 항목 4 : size()의 결과를 0과 비교할 생각이라면 차라리 empty를 호출하자 항목 5 : 단일 요소를 단위로 동작하는 멤버 함수보다 요소의 범위를 단위로 동작하는 멤버 함수가 더 낫다 항목 6 ..
최근댓글