STL 컨테이너들은 객체를 복사하여, 데이터를 쌓아둔다. 만약 기본자료형이 아닌 클래스 객체형이라면, 반드시 복사 생성자와 operator = 을 꼭 만들어 두어야만 켄터에너에 순풍 순풍 넣을수 있다. (암시적 생성자와 operator= 도 있다.) 이런 컨테이너에 한가지 문제점이 지적되었다. 사용자 왈 : "만약 30Byte 짜리 데이터 10만개를 넣는다면, 너무 많은 비용을 지불하는게 아니냐?" 이 때문에 크게 두가지 해결 방법이 나오게 된다. 첫째, 포인터를 넣어 복사 비용을 줄이자. 사용자는 신나게 컨테이너에 포인터를 넣기 시작하지만, 컨테이너 왈 : "리소스 해체 의무는 너가 저야 한다~" .. 결국 사용자는 울며 겨자먹기로 컨테이너에 포인터를 넣고, 힘들게 리소스 해체도 하게 된다. 이렇게 되..
책 정리 검색 결과
이 이야기는 컨테이너에만 맞는 말이 아니라고 생각한다. 물론 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 ..
인터페이스 상속과 구현 상속을 무엇을 의미 하는가? 기본 클래스의 멤버 함수의 상속 방법을 두고 하는 말이다. 인터페이스 상속과 구현 상속의 차이점은 무엇인가? 인터페이스 상속이란, 순수 가상 함수의 상속을 말한다. 구현 상속이란, 가상 함수와 비가상 함수의 상속을 말한다. 각 함수들은? 순수 가상 함수 : 가상함수 이나, 함수의 정의부분이 없고, 선언 부분만 있는 함수 가상 함수 : 파생 클래스에서 가상함수를 받는 함수가 없다면, 기본 클래스 함수가 호출되고 있다면, 파생 클래스의 가상 함수를 호출시켜주는 매체가 되는 함수 비 가상 함수 : 일반 멤버 함수, 각 함수들의 사용 법은? 순수 가상 함수 : 모든 파생 클래스마다 동일한 역활을 하는 고유의 동작을 필요로 하게 될 때 가상 함수 : 모든 파생 ..
현실세계에서나 C++ 세계에서나 이름은 중요하다. 그래서 이런 관용어구가 딱 들어 맞는데 "이름을 훔쳐가는 자는 빼앗긴 사람만 빈털터리로 만들고 마는 것입니다 : He that filches from me my good name ... makes me poor indeed : 곽용재씨께선 명예를 이름으로 본문성격에 맞추어 해석했다고 적혀 있음" 어떤가 딱 들어 맞는가? 왜 이런 의미로 쓰이는지 C++의 코드를 통하여, 알아 보자. 1. 예시 코드 int x;// 전역 변수 void someFunc() { double x;// 지역 변수 std::cin >> x;// 입력을 받아, 지역변수 x에 새 값을 읽어 넣는다. } 이 코드가 어떻게 움직일지는 다들 알겠지만 전역 변수 x에 값을 넣는것이 아닌, "최..
최근댓글