Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 set, multiset, unordered_set, unordered_multiset의 차이점

<시간/>

여기서 우리는 C++에서 set, multiset, unordered_set 및 unordered_multiset의 차이점이 무엇인지 볼 것입니다. 예제를 사용하여 속성을 살펴보겠습니다.

설정

set의 속성은 아래와 같습니다.

  • 정렬된 순서로 데이터 저장
  • 고유한 값만 저장
  • 데이터를 삽입하거나 삭제할 수 있지만 데이터를 변경할 수는 없습니다.
  • 시작 및 종료 반복자를 사용하여 둘 이상의 요소를 제거할 수 있습니다.
  • 반복자를 사용하여 순회할 수 있습니다.
  • 세트는 이진 검색 트리를 사용하여 구현됩니다.

이제 예를 살펴보겠습니다.

예시

#include <iostream>
#include <set>
using namespace std;
main() {
   int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
   set<int> my_set;
   for(int i = 0; i<15; i++) {
      my_set.insert(data[i]);
   }
   set<int>::iterator it;
   for(it = my_set.begin(); it != my_set.end(); it++) {
      cout << "Item: " << *it << endl;
   }
}

출력

Item: 11
Item: 22
Item: 23
Item: 33
Item: 41
Item: 44
Item: 55
Item: 66
Item: 77
Item: 88
Item: 99

다중 집합

set의 속성은 아래와 같습니다 -

  • 정렬된 순서로 데이터 저장
  • 중복 데이터를 저장할 수 있습니다.
  • 시작 및 종료 반복자를 사용하여 둘 이상의 요소를 제거할 수 있습니다.

이제 예를 살펴보겠습니다.

예시

#include <iostream>
#include <set>
using namespace std;
main() {
   int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
   multiset<int> my_set;
   for(int i = 0; i<15; i++) {
      my_set.insert(data[i]);
   }
   multiset<int>::iterator it;
   for(it = my_set.begin(); it != my_set.end(); it++) {
      cout << "Item: " << *it << endl;
   }
}

출력

Item: 11
Item: 11
Item: 22
Item: 22
Item: 23
Item: 33
Item: 41
Item: 44
Item: 55
Item: 66
Item: 66
Item: 66
Item: 77
Item: 88
Item: 99

순서 없는 세트

set의 속성은 아래와 같습니다 -

  • 데이터는 임의의 순서로 배치할 수 있습니다.
  • 중복 데이터는 삭제됩니다.
  • 해시 테이블을 사용하여 생성된 세트입니다.
  • 반복자가 가리키는 요소는 하나만 지울 수 있습니다.

이제 예를 살펴보겠습니다.

예시

#include <iostream>
#include <unordered_set>
using namespace std;
main() {
   int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
   unordered_set<int> my_set;
   for(int i = 0; i<15; i++) {
      my_set.insert(data[i]);
   }
   unordered_set<int>::iterator it;
   for(it = my_set.begin(); it != my_set.end(); it++) {
      cout << "Item: " << *it << endl;
   }
}

출력

Item: 11
Item: 55
Item: 22
Item: 66
Item: 33
Item: 44
Item: 77
Item: 88
Item: 99
Item: 23
Item: 41

순서 없는 다중 집합

set의 속성은 아래와 같습니다 -

  • 데이터는 임의의 순서로 배치할 수 있습니다.
  • 중복 데이터 허용
  • 해시 테이블을 사용하여 생성된 세트입니다.
  • 반복자가 가리키는 요소는 하나만 지울 수 있습니다.

이제 예를 살펴보겠습니다.

예시

#include <iostream>
#include <unordered_set>
using namespace std;
main() {
   int data[15] = {11, 55, 22, 66, 33, 22, 11, 44, 77, 88, 66, 99, 66, 23, 41};
   unordered_multiset<int> my_set;
   for(int i = 0; i<15; i++) {
      my_set.insert(data[i]);
   }
   unordered_multiset<int>::iterator it;
   for(it = my_set.begin(); it != my_set.end(); it++) {
      cout << "Item: " << *it << endl;
   }
}

출력

Item: 11
Item: 55
Item: 22
Item: 66
Item: 33
Item: 22
Item: 11
Item: 44
Item: 77
Item: 88
Item: 66
Item: 99
Item: 66
Item: 23
Item: 41