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

Sự khác biệt giữa tập hợp, tập hợp nhiều, tập hợp không có thứ tự, tập hợp không có thứ tự trong C ++

Ở đây chúng ta sẽ thấy sự khác biệt đối với set, multiset, unardered_set và unardered_multiset trong C ++. Hãy để chúng tôi xem các thuộc tính của chúng bằng cách sử dụng một số ví dụ.

Đặt

Các thuộc tính của set như dưới đây

  • Lưu trữ dữ liệu theo thứ tự đã sắp xếp
  • Chỉ lưu trữ các giá trị duy nhất
  • Chúng tôi có thể chèn hoặc xóa dữ liệu, nhưng không thể thay đổi dữ liệu
  • Chúng tôi có thể xóa nhiều phần tử bằng cách sử dụng trình vòng lặp bắt đầu và kết thúc
  • Chúng tôi có thể duyệt qua bằng cách sử dụng trình vòng lặp
  • Các tập hợp được triển khai bằng Cây tìm kiếm nhị phân

Bây giờ chúng ta hãy xem một ví dụ

Ví dụ

#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;
   }
}

Đầu ra

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

Nhiều bộ

Các thuộc tính của set như dưới đây -

  • Lưu trữ dữ liệu theo thứ tự đã sắp xếp
  • Nó cho phép lưu trữ dữ liệu trùng lặp
  • Chúng tôi có thể xóa nhiều phần tử bằng cách sử dụng trình vòng lặp bắt đầu và kết thúc.

Bây giờ chúng ta hãy xem một ví dụ.

Ví dụ

#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;
   }
}

Đầ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

Nhóm không có thứ tự

Các thuộc tính của set như dưới đây -

  • Dữ liệu có thể được đặt theo bất kỳ thứ tự nào
  • Dữ liệu trùng lặp sẽ bị loại bỏ
  • Tập hợp này được tạo bằng Hash-table
  • Chúng tôi chỉ có thể xóa một phần tử, nơi trình vòng lặp đang trỏ tới

Bây giờ chúng ta hãy xem một ví dụ.

Ví dụ

#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;
   }
}

Đầu ra

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

Tập hợp nhiều thứ tự

Các thuộc tính của set như dưới đây -

  • Dữ liệu có thể được đặt theo bất kỳ thứ tự nào
  • Dữ liệu trùng lặp được cho phép
  • Tập hợp này được tạo bằng Hash-table
  • Chúng tôi chỉ có thể xóa một phần tử mà trình lặp đang trỏ tới

Bây giờ chúng ta hãy xem một ví dụ.

Ví dụ

#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;
   }
}

Đầu ra

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