Computer >> Máy Tính >  >> Lập trình >> C ++

Sự khác biệt giữa Set và UnOrderSet trong C ++

Trong C ++, cả Set và UnOrderSet đều là kiểu cấu trúc dữ liệu được sử dụng để lưu trữ dữ liệu để dễ dàng truy cập và chèn. Dựa trên đặc điểm của cả hai cấu trúc dữ liệu này, chúng ta có thể phân biệt giữa Set và UnOrderSet

Sau đây là những điểm khác biệt quan trọng giữa Set và UnOrderSet -

Sr. Không. Chìa khóa Đặt UnOrderSet
1 Định nghĩa Bộ trong C ++ có thể được định nghĩa là một loại vùng chứa kết hợp lưu trữ dữ liệu trong cặp giá trị khóa và trong đó mỗi phần tử giá trị phải là duy nhất, vì giá trị của phần tử xác định nó. Mặt khác, UnOrderSet là một phần của C ++ STL (Thư viện mẫu chuẩn) và được định nghĩa là các vùng chứa kết hợp như Set lưu trữ các cặp giá trị khóa được sắp xếp, nhưng không giống như Set lưu trữ dữ liệu theo thứ tự đã sắp xếp UnOrderSet lưu trữ dữ liệu không theo thứ tự đã sắp xếp .
2 Sắp xếp Trong trường hợp Dữ liệu tập hợp được lưu trữ theo thứ tự được sắp xếp. Mặt khác, trong trường hợp UnOrderSet, dữ liệu không được lưu trữ theo thứ tự đã sắp xếp.
3 Giá trị trùng lặp Trong Đặt các giá trị trùng lặp không được phép lưu trữ. Mặt khác, trong trường hợp các giá trị trùng lặp của UnOrderSet bị loại bỏ.
4 Thực hiện Bộ được triển khai bằng Cây tìm kiếm nhị phân. Tuy nhiên, mặt khác UnOrderedSet được tạo bằng Hash-table

Ví dụ

Đặt

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

Đầu ra

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

Ví dụ

UnOrderSet

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

Đầu ra

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