일부의 정보만 기억을 했다가 매칭을 하는 것
📍 키에 대응되는 값을 저장하는 자료구조
#include <unordered_set>
void unordered_set_example() {
unordered_set<int> s;
s.insert(-10);
s.insert(100);
s.insert(15); // {-10, 100, 15}
s.insert(-10); // 중복 불가
cout << s.erase(100) << '\n'; // {-10, 15}, 1 반환
cout << s.erase(20) << '\n'; // {-10, 15}, 0 반환
if (s.find(15) != s.end()) // 반환값의 형태는 iterator
cout << "15 is in s\n";
else
cout << "15 is not in s\n";
cout << s.size() << '\n'; // 2 반환
cout << s.count(50) << '\n'; // unordered_set에서는 중복이 허용되지 않으므로 항상 1 또는 0 반환
for (auto e : s) // range-based loop
cout << e << ' ';
cout << '\n';
}
✔️ 중복 허용
#include <unordered_set>
void unordered_multiset_example() {
unordered_multiset<int> ms;
ms.insert(-10);
ms.insert(100);
ms.insert(15);
ms.insert(-10); // 중복 허용
ms.insert(15);
cout << ms.erase(15) << '\n'; // 15가 모두 다 지워짐!
cout << ms.erase(ms.find(-10)) << '\n'; // 딱 한 개의 -10만 지워짐
if (ms.find(15) != ms.end()) // 반환값의 형태는 iterator
cout << "15 is in ms\n";
else
cout << "15 is not in ms\n";
cout << ms.size() << '\n';
for (auto e : ms) // range-based loop
cout << e << ' ';
cout << '\n';
}
#include <unordered_map>
void unordered_map_example() {
unordered_map<string, int> m;
m["hi"] = 123;
m["bkd"] = 1000;
m["gogo"] = 165;
cout << m.size() << '\n'; // 3 반환
m["hi"] = -7;
if (m.find("hi") != m.end())
cout << "hi in m\n";
else
cout << "hi is not in m\n";
m.erase("bkd"); // ("hi", 123), ("gogo", 165)
for (auto e : m)
cout << e.first << ' ' << e.second << '\n';
for (unordered_map<string, int>::iterator idx = m.begin(); idx != m.end(); idx++)
cout << idx->first << ' ' << idx->second << '\n';
}