[STL] 정렬 컨테이너1 (set, multiset, map, multimap)

프로그래밍/C/C++ 2014. 2. 9. 04:01

▶ STL-Set, Multiset

 Set은 key만을 저장하는 자료구조 입니다.

 Set은 중복되지 않은 key를 저장합니다.(multiset은 중복되지 않은 key를 저장-중복 허용)

 Set에 값을 한번 넣어보는것 만으로 중복된 값이 있는지 찾을수 있습니다.

 

  ☞ Set함수의 생성

    Set<int> a; //오름 차순 정렬

    Set<int, greater<int>> a; //내림차순으로 정렬

    Set<int> a(List.begin(), List.end()); //List를 미리 넣음

    Set<int, greater<int>> a(List.begin(), List.end());

 insert문을 통해 해당 타입에 맞는 값을 넣을수 있습니다.

 find문을 통해 특정 값을 인자로 취해서 set내에 값이 존재하면 그 값의 위치를 반복자를 리턴합니다.

 (없을시 end of set을 리턴)

 

▶ STL-Map, Multimap

 Map은 key와 value 정보를 가지고 있는 자료구조 입니다.

 Multimap은 같은 key로 인덱싱 되는 여러개의 다른 원소를 허용합니다.

 

 Map은 vector나 deque와 같이 인덱싱이 가능합니다.

    map<int, int> myMap;

    myMap.insert(map<int, int>::value_type(5, 7);

    myMap[5] = 7;

    cout << myMap[5];  // -> 7

 Map과 deque, vector 의 차이는 key값이 꼭 숫자일 필요가 없다는 것입니다.

 또한 Map은 정렬된 데이터의 구조를 가지고 있습니다(Tree, hash)

 set과 마찬가지로 insert를 통해 해당 타입에 맞는 값을 넣을수 있습니다.(인덱싱)

 find문을 통해 특정 값을 인자로 취해서 map내에 값이 존재한다면 그 위치를 나타내는 반복자를 리턴합니다.

 (없을시에는 end에 해당하는 반복자를 리턴)