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

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

Trong C ++, cả Set và MultiSet đề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à MultiSet.

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

Sr. Không. Chìa khóa Đặt MultiSet
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, MultiSet 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 liên kết 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 chỉ lưu trữ các khóa duy nhất, MultiSet có thể có các khóa trùng lặp.
2 Sắp xếp Trong trường hợp của Set, dữ liệu được lưu trữ theo thứ tự được sắp xếp. Trong trường hợp MultiSet, dữ liệu cũ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 MultiSet, chúng tôi có thể lưu trữ các giá trị trùng lặp.
4 Thao tác Trong trường hợp Set, người ta không thể thay đổi giá trị khi nó được chèn vào tuy nhiên chúng ta có thể xóa hoặc chèn lại. Tuy nhiên, trong trường hợp MultiSet cũng vậy, chúng tôi không thể thay đổi giá trị sau khi đã chèn.

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ụ

MultiSet

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

Đầu ra

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