[자료구조] 셋 Set, 맵 Map
//c++ STL. 추후 수정
📝 연관 컨테이너
[개념]
종류 | 설명 |
---|---|
set | 데이터를 키로 사용하는 연관 컨테이너 (key만 있고 value는 없는 map) |
multiset | 키의 중복을 허락하는 set |
map | 데이터를 키와 값 쌍으로 사용하는 연관 컨테이너 |
multimap | 키의 중복을 허락하는 map |
hash_set | 자료를 정렬하지 않은 set |
hash_map | 자료를 정렬하지 않은 map |
hash_multiset | 자료를 정렬하지 않은 multiset |
hash_multimap | 자료를 정렬하지 않은 multimap |
[map 멤버 함수]
- m.size(): m의 노드 개수를 리턴
- m.empty(): m의 사이즈가 0인지 아닌지를 확인
- m.begin(): m의 첫 번째 원소를 가리키는 iterator 리턴
- m.end(): m의 마지막 원소를 가리키는 iterator 리턴
- m[k] = v: m에 key가 k이고, value가 v인 노드 추가
- m.insert(make_pair(k,v)): m.erase(k)
- m에서 key가 k인 노드 삭제: m.find(k)
- m에서 key가 k인 노드를 찾아, 해당 노드를 가리키는 iterator 리턴(key가 k인 노드가 존재하지 않는 경우, m의 마지막 원소를 가리키는 iterator 리턴)
- m.count(k): m에서 key가 k인 노드의 개수를 리턴
[map 예시 코드]
#include <map>
map<char,int> m;
map<char,int>::iterator it;
m['B'] = 2; //m : (B,2)
m.insert(make_pair('A',1)); //m : (A,1) (B,2)
m['C'] = 3; //m : (A,1) (B,2) (C,3)
m.erase('A'); //m : (B,2) (C,3)
//m전체를 순회하며 key와 value 출력
for(it = m.begin(); it != m.end(); it++)
cout << it->first << ' ' << it->second << '\n';
if(m.find('B') != m.end())
cout << "key값이 B인 노드가 존재합니다." << '\n';
else
cout << "key값이 B인 노드가 존재하지 않습니다." << '\n';
[set 멤버 함수]
- s.size(): s의 노드 개수를 리턴
- s.empty(): s의 사이즈가 0인지 아닌지를 확인
- s.begin(): s의 첫 번째 원소를 가리키는 iterator 리턴
- s.end(): s의 마지막 원소를 가리키는 iterator 리턴
- s.insert(k): s에 값이 k인 노드 추가
- s.erase(k): s에서 값이 k인 노드 삭제
- s.find(k): s에서 값이 k인 노드를 찾아, 해당 노드를 가리키는 iterator 리턴(값이 k인 노드가 존재하지 않는 경우, s의 마지막 원소를 가리키는 iterator 리턴)
- s.count(k): s에서 값이 k인 노드의 개수를 리턴
[set 예시 코드]
set<int> s;
set<int>::iterator it;
s.insert(4); //s : 4
s.insert(1): //s : 1 4
s.insert(2); //s : 1 2 4
vector<int> v;
v.push_back(3); //v : 3
v.push_back(5); //v : 3 5
v.push_back(6); //v : 3 5 6
s.insert(v.begin(), v.end()); //s : 1 2 3 4 5 6
s.erase(4); //s : 1 2 3 5 6
s.erase(s.begin()); //s : 2 3 5 6
//지울 원소를 입력받음
int toErase;
scanf("%d", &toErase);
it = s.find(toErase);
//지울 원소가 존재하는 원소일 때만 지움
if(it != s.end())
s.erase(it);
Author And Source
이 문제에 관하여([자료구조] 셋 Set, 맵 Map), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kji990607/자료구조-셋-Set-맵-Map저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)