이 기사에서는 C++ STL에서 set과 unordered_set이 무엇인지 이해하고 그 차이점에 대해 알아보겠습니다.
무엇이 설정되어 있습니까?
세트 Key 유형의 정렬된 고유 개체 집합을 포함하는 연관 컨테이너입니다. 각 요소는 한 번만 발생할 수 있으므로 중복이 허용되지 않습니다. 사용자는 요소를 임의의 순서로 삽입하여 집합을 만들 수 있으며 집합은 사용자에게 정렬된 데이터를 반환합니다. 이는 집합에 사용자로부터 추상화된 데이터를 정렬하기 위한 정의가 포함되어 있음을 의미합니다.
set을 사용할 수 있는 주요 이유는 -
-
정렬된 데이터일 때 필수
-
중복 값이 필요하지 않은 경우 고유한 데이터만 필요합니다.
-
이진 검색 트리를 사용하려는 경우 해시 테이블 대신.
-
log(n) 복잡성이 소요되므로 검색 시간에 문제가 없는 경우 검색 중
입력 -
set = {2, 1, 5, 6, 9, 3, 2}
출력 -
1, 2, 3, 5, 6, 9
참고 - 값은 임의의 순서로 삽입되지만 집합별로 정렬되며 집합에서 중복 값도 제거됩니다.
예시
#include <iostream> #include <set> using namespace std; int main(){ //creating an array int arr[] = {2, 1, 5, 6, 9, 3, 2}; int size = sizeof(arr)/ sizeof(arr[0]); //declaring a set set<int> SET; //inserting elements from an array to set using insert() for(int i = 0; i<size; i++){ SET.insert(arr[i]); } set<int>::iterator it; cout<<"Values in set are: "; for(it = SET.begin(); it != SET.end(); it++){ cout <<*it<<" "; } }
출력
위 코드의 출력은 -
입니다.Values in set are: 1 2 3 5 6 9
unordered_set이란 무엇입니까?
정렬되지 않은_세트 무작위로 삽입된 정렬되지 않은 데이터 세트를 포함하는 연관 컨테이너입니다. 각 요소는 한 번만 발생할 수 있으므로 중복이 허용되지 않습니다. 사용자는 요소를 순서에 관계없이 삽입하여 정렬되지 않은 집합을 만들 수 있으며 정렬되지 않은 집합은 순서에 관계없이 데이터를 반환합니다. 즉, 정렬되지 않은 형식입니다.
순서가 없는 집합을 사용할 수 있는 주된 이유는 -
-
정렬된 데이터가 필요하지 않으면 데이터를 정렬되지 않은 형식으로 사용할 수 있음을 의미합니다.
-
중복 값이 필요하지 않은 경우 고유한 데이터만 필요합니다.
-
Binary Search Tree 대신 Hash Table을 사용하고 싶을 때.
-
평균의 경우 O(1), 최악의 경우 O(n)이 걸리므로 더 빠른 검색이 필요한 경우
입력 -
set = {2, 1, 5, 6, 9, 3, 2}
출력 -
3, 9, 6, 5, 2
예시
#include <iostream> #include <unordered_set> using namespace std; int main (){ int arr[] = { 2, 1, 5, 6, 9, 3, 2 }; int size = sizeof (arr) / sizeof (arr[0]); unordered_set < int >U_SET; //inserting elements from an array to an unordered_set using insert() for (int i = 0; i < size; i++){ U_SET.insert (arr[i]); } unordered_set < int >::iterator it; cout << "Values in unordred set are: "; for (it = U_SET.begin (); it != U_SET.end (); it++){ cout << *it << " "; } }
출력
위 코드의 출력은 -
입니다.Values in unordered set are: 3 6 5 9 2 1