unordered_set은 해시 기반 데이터 구조를 사용해서 데이터를 저장하고 검색하는 컨테이너다. 데이터의 중복을 방지하면서 빠르게 삽입, 삭제, 검색할 수 있는 기능을 제공한다.
unordered_set은 해시 테이블을 사용해서 데이터를 저장한다. O(1) (최악의 경우 O(n) - 해시 충돌 발생 시) insert(const T& value): 요소를 삽입한다. 이미 존재하는 값은 삽입되지 않는다. find(const T& key): 특정 키를 찾고, 존재하면 해당 요소의 이터레이터를 반환한다. erase(const T& key): 특정 키를 삭제한다. size(): 현재 저장된 요소의 개수를 반환한다. clear(): 모든 요소를 제거한다. empty(): 컨테이너가 비어 있는지 여부를 반환한다. #include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> mySet;
// 삽입
mySet.insert(10);
mySet.insert(20);
mySet.insert(30);
// 검색
if (mySet.find(20) != mySet.end()) {
std::cout << "20이 존재합니다." << std::endl;
}
// 삭제
mySet.erase(10);
// 전체 출력
for (const auto& elem : mySet) {
std::cout << elem << " ";
}
return 0;
}
#include <iostream>
#include <unordered_set>
#include <vector>
int main() {
std::vector<int> data = {1, 2, 2, 3, 4, 4, 5};
std::unordered_set<int> uniqueData;
for (int num : data) {
uniqueData.insert(num);
}
std::cout << "중복 제거 후: ";
for (const auto& elem : uniqueData) {
std::cout << elem << " ";
}
return 0;
}
O(1)의 성능으로 빠른 검색 및 삽입이 가능하다. O(n)까지 성능이 저하된다. set보다 메모리 사용량이 높을 수 있다.