본문 바로가기

C++ Programming/STL

STL 컨테이너 개요

STL은 크게 2가지 컨테이너를 제공한다.

1. 시퀀스 컨테이너  - 모든 원소들이 자신만의 위치를 가지고 있는 순서가 존재하는 컬렉션
                              ex) vector,deque,list
2. 연관 컨테이너 - 모든 원소들의 정렬 기준에 의존하여 자동 정렬이되는 컬렉션
                              ex) set,multiset,map,multimap


3. vector  - 자신의 원소들을 동적인 배열을 이용하여 관리한다.
                 랜덤액세스 가능하며 배열의 끝부분에 데이터를 추가하거나 삭제하는 것은 매우 빠르다.
                 하지만 데이터를 배열 중간이나 앞부분에 삽입하는 것은 많은 시간을 필요로 한다.. 밀림..

    #include <vector>
    vector<int> coll;
    coll.push_back(data);

4. deque - 앞뒤로 data를 삽입,삭제가 가능한 배열구조이다.
                앞뒤로 삽입,삭제하는것은 매우 빠르나
                 중간에 삽입하는 것은 시간을 필요로 한다...밀림
   #include <deque>
     deque<int> dell;
     dell.push_front(data);

5. list - 이중리스트처럼 구현되 있다. 특정 원소를 액세스하기 위해 걸리는 복잡도는 느리다. 
            하지만 어떠한 위치에서도 빠르게 삽입과 삭제가 이루어진다.
   #include <list>
     list<char> listchar;
     listchar.push_back(data);
     listchar.pop_front(data);

6. set - 원소가 가진 값에 따라 정렬이 되는 컨테이너이다. 
    #include <set>
     typedef std::set<int> intset;
      intset coll;
      coll.insert(3);
      ...
7. multiset - 중복을 허용한다.

8. map - key/value를 쌍으로 가지고 있는 컨테이너이다. 
    #include <map>
     typedef std::map<int,string> intset;
      intset coll;
      coll.insert(make_pair(5,"tagged"));
      ...
9.  multimap - 중복을 허용한다.

10. stack (LIFO)
11. queue(FIFO)
12. priority queue - 우선순위를 지닌 원소들을 관리하는 컨테이너(기본적으로 < 연산자를 기준으로 한다.)

13. 반복자 - 컨테이너가 소유한 원소들을 순회할 수 있는 객체이다.