연관 컨테이너(associate container)
연관 컨테이너 컨테이너의 종류 중 하나로 키와 값을 쌍으로 저장한다.
원소들의 위치를 정할 수 없다.
다음과 같은 종류가 있다.
- 맵(map)
- 셋(set)
맵(map)
맵은 키와 값으로 데이터를 관리한다. 삽입시 정렬이 되기 때문에 검색 속도가 매우 빠르다.
키는 유일하므로 하나의 키에 하나의 값만 가질 수 있다.
(단, 멀티맵(multimap)은 은 키 중복이 가능하다.)
코드
#include <iostream> #include <map> int main(){ std::map<std::string, int> mp; mp.insert({"철수", 20}); // 원소 추가 mp.insert({"영희", 30}); mp["바둑이"] = 100; // 이렇게도 가능 mp.erase("철수"); // 키를 이용해 데이터 삭제 mp.insert({"영희", 50}); // 같은 키로 넣으면 무시된다. (50으로 갱신x) mp["바둑이"] = 500; // 이렇게 넣으면 값이 갱신된다. (500으로 갱신o) return 0; }
셋(set)
셋은 키가 곧 값인 단순한 연관 컨테이너다.
키는 유일하므로 값도 유일하며 수학의 집합의 개념과 같다.
(단, 멀티셋(multiset)은 은 키 중복이 가능하다.)
코드
#include <iostream> #include <set> int main(){ std::set<int> st; st.insert(5); // 원소 추가 st.insert(6); st.erase(2); // 원소 삭제 return 0; }
추가
맵과 셋은 다음과 같이 생성과 동시에 초기화할 수 있다.
#include <iostream> #include <map> #include <set> int main(){ // map std::map<int, int> mp1{{1, 100}, {2, 200}, {3, 300}, {4, 400}}; std::map<int, int> mp2 = {{1, 100}, {2, 200}, {3, 300}, {4, 400}}; std::pair<int, int> mpArr[] = { {1, 100}, {2,200} , {3, 300}, {4, 400} }; std::map<int, int> mp3(mpArr, mpArr + 4); // set std::set<int> st1{1, 2, 3, 4}; std::set<int> st2 = {1, 2, 3, 4}; int stArr[] = {1, 2, 3, 4, 5, 6, 7}; std::set<int> st3(stArr, stArr + 4); return 0; }
'CS > 자료구조' 카테고리의 다른 글
C++ STL - Sequence Container; vector, deque, list, forward_list (0) | 2022.08.12 |
---|---|
C++ STL이란? (0) | 2022.08.12 |