[STL] Unordered_set, multiset 생성, 삽입, 삭제 등 사용법
Notepad96
·2020. 11. 7. 19:34
1. unordered_set, _multiset
set과 multiset은 값을 삽입시키면 자동으로 정렬이되어 저장되는 구조였다.
만약 정렬을 하지 않고서 삽입한 일련의 순서를 유지시키고 싶다.
라고 한다면 unordered_set을 사용하면 된다.
unordered_set과 unordered_multiset은 정렬이 되지 않는 점을 빼면 각각 set과 multiset와 동일하다.
unordered_set, unordered_multiset을 사용하기 위해서는 unordered_set을 include하여야 한다.
2. 코 드
#include <iostream>
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> uset;
unordered_multiset<int> umset;
uset.insert(3); // 3
uset.insert(5); // 3 5
uset.insert(1); // 3 5 1
uset.insert(4); // 3 5 1 4
uset.insert(2); // 3 5 1 4 2
uset.insert(5); // 3 5 1 4 2
for (int i : uset) {
cout << i << " ";
}
cout << "\n";
for (auto it = uset.find(5); it != uset.end(); it++) {
cout << *it << " ";
}
cout << "\n";
umset.insert(5); // 5
umset.insert(3); // 5 3
umset.insert(1); // 5 3 1
umset.insert(4); // 5 3 1 4
umset.insert(2); // 5 3 1 4 2
umset.insert(5); // 5 5 3 1 4 2
umset.insert(1); // 5 5 3 1 1 4 2
for (int i : umset) {
cout << i << " ";
}
cout << "\n";
return 0;
}
- unordered_set의 경우 set처럼 중복된 원소를 갖을 수 없으므로 이미 삽입된 원소 5를 삽입하여도 아무일도 일어나지 않는다.
여기서 중요한점은 기존의 저장되어 있던 5는 그대로 있으며 삽입이 실패한다는 것이다.
그 때문에 2번 째로 삽입하였던 5를 find로 찾아서 얻은 반복자를 통하여 end()까지 루프를 하였을 경우 맨 처음 삽입하였던 3은 출력되지 않았다.
- unordered_multiset은 multiset처럼 중복된 원소를 갖을 수 있다.
그러나 출력된 화면을 보면 중복된 원소 삽입 시 일련의 순서로 삽입되는 것이 아니라 이미 존재하는 중복 원소 뒤에 이어서 삽입되는 것을 확인할 수 있다.
3. 참 조
'C++ > Container' 카테고리의 다른 글
[STL] Stack 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.08 |
---|---|
[STL] Unordered_map, multimap 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.08 |
[STL] Multimap 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.06 |
[STL] Map 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.06 |
[STL] Multiset 생성, 삽입, 삭제 등 사용법 (0) | 2020.11.05 |