반응형


http://www.viper.pe.kr/cgi-bin/moin.cgi/STL/%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88

1. 컨테이너(Container) [Bottom] [Top]

1.1. 컨테이너의 특징 [Bottom] [Top]

  • 특징

    vector

    deque

    list

    set/multiset

    map/multimap

    내부 자료구조

    동적 배열

    배열의 배열

    이중 링크드 리스트

    바이너리 트리

    바이너리 트리

    원소

    value

    value

    value

    value

    Key/value

    중복 허옹 여부

    허용

    허용

    허용

    허용 안함 / 허용

    key에 대해서만 허용 안함 / 허용

    랜덤 액세스 여부

    허용

    허용

    허용 안함

    허용 안함

    key를 사용하여 가능 / 허용 안함

    반복자 카테고리

    랜덤 액세스

    랜덤 액세스

    양방향

    양방향(원소는 상수이다)

    양방향(key는 상수)

    원소의 검색/찾기

    느림

    느림

    매우 느림

    빠름

    key에 대해서 빠름

    원소의 삽입 및 제거가 
    빠른 구간

    컨테이너의 끝

    컨테이너의 앞과 끝

    아무곳에서나

    -

    -

    삽입/제거 동작의 반복자와 
    레퍼런스, 포인트의 무효화

    재할당시

    항상

    일어나지 않음

    일어나지 않음

    일어나지 않음

    제거된 원소에 대한 메모리 
    해제 여부

    일어나지 않음

    가끔 일어남

    항상 일어남

    항상 일어남

    항상 일어남

    메모리 예약의 허용 여부

    허용

    허용 안함

    -

    -

    -

    트랜젝션 안전성(성공하거나 
    아무런 영향도 없다)

    push, pop

    push, pop

    sort()와 할당 연산자를 
    제외한 모든 연산들

    다중 원소 삽입 제외한 
    모든 연산

    다중 원소 삽입 제외한 
    모든 연산

1.2. 시퀀스 컨테이너(Sequence container) [Bottom] [Top]

  • vector - 가변 길이 시퀀스, 임의 접근(random access) 가능, 시퀀스의 끝에서 삽입/삭제.
  • deque - 가변 길이 시퀀스, 임의 접근 가능, 시퀀스의 앞, 끝에서 삽입/삭제.
  • list - 가변 길이 시퀀스, 선형 시간 접근만 가능, 임의의 위치에 삽입/삭제 가능.

1.3. 정렬 연관 컨테이너(Sorted associative container) [Bottom] [Top]

  • set - 유일 키(Unique key) 지원, 빠른 키(Key) 값 검색.
  • multiset - 중복 키(Duplicate key) 지원, 빠른 키 값 검색.
  • map - 유일 키 지원, 키 값으로 데이터 검색.
  • multimap - 중복 키 지원, 키 값으로 데이터 검색.

1.4. 컨테이너 어댑터(Container adaptor) [Bottom] [Top]

  • stack - vector, deque, list 에 적용 가능, LIFO(후입선출) 구조.
  • queue - deque, list 에 적용 가능, FIFO(선입선출) 구조.
  • priority_queue - vector, deque 에 적용 가능, 비교 함수 객체에 따라 우선 순위 처리.

1.5. 비표준 컨테이너(Non-standard container) [Bottom] [Top]

  • hash_map
  • hash_set
  • bitset

2. 컨테이너 동작 [Bottom] [Top]

주요 컨테이너의 기본 동작에 대하여 그림으로 정리

참조> 그림을 보는 방법

  • 구분

    설명

    초록색 (Green)

    컨테이너

    파란색 (Blue)

    참조 함수

    보라색 (Purple)

    삽입/삭제 함수

2.1. vector 동작 [Bottom] [Top]

2.2. queue 동작 [Bottom] [Top]

2.3. deque, list 동작 [Bottom] [Top]

2.4. stack 동작 [Bottom] [Top]

3. 컨테이너 함수 [Bottom] [Top]

3.1. insert() 함수 [Bottom] [Top]

  • Toggle line numbers
       1 // 클래스 선언
       2 class CData
       3 {
       4         ...
       5 };
       6 
       7 // 데이터형 선언
       8 typedef std::set< CData * >                     SET_DATA;
       9 typedef std::pair< SET_DATA::iterator, bool >   SET_DATA_INSERT_RESULT;
      10 
      11 
      12 //------------------------------------------------------------------------------
      13 // 컨테이너 정의
      14 SET_DATA setData;
      15 
      16 // 새로운 객체 할당
      17 CData * pData = new CData();
      18 
      19 // 데이터 삽입 & 결과
      20 SET_DATA_INSERT_RESULT result = setData.insert( pData );
      21 if( false == result.second )
      22 {
      23         // ERROR: 동일한 데이타 존재함
      24 }
    


UnfinishedPage

반응형

+ Recent posts