Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่าง set, multiset, unordered_set, unordered_multiset ใน C++


เราจะมาดูกันว่า set, multiset, unordered_set และ unordered_multiset มีความแตกต่างกันอย่างไรใน C++ ให้เราดูคุณสมบัติของพวกมันโดยใช้ตัวอย่าง

ตั้งค่า

คุณสมบัติของเซตมีดังนี้

  • จัดเก็บข้อมูลตามลำดับ
  • เก็บเฉพาะค่าที่ไม่ซ้ำ
  • เราสามารถแทรกหรือลบข้อมูลได้ แต่ไม่สามารถเปลี่ยนแปลงข้อมูลได้
  • เราสามารถลบองค์ประกอบได้มากกว่าหนึ่งองค์ประกอบโดยใช้ตัววนซ้ำเริ่มต้นและสิ้นสุด
  • เราสามารถสำรวจได้โดยใช้ตัววนซ้ำ
  • ชุดดำเนินการโดยใช้แผนผังการค้นหาแบบไบนารี

เรามาดูตัวอย่างกัน

ตัวอย่าง

#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

มัลติเซ็ต

คุณสมบัติของเซตมีดังนี้ −

  • จัดเก็บข้อมูลตามลำดับ
  • อนุญาตให้จัดเก็บข้อมูลที่ซ้ำกัน
  • เราสามารถลบองค์ประกอบได้มากกว่าหนึ่งองค์ประกอบโดยใช้ตัววนซ้ำเริ่มต้นและสิ้นสุด

เรามาดูตัวอย่างกัน

ตัวอย่าง

#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

ชุดไม่เรียงลำดับ

คุณสมบัติของเซตมีดังนี้ −

  • ข้อมูลสามารถวางในลำดับใดก็ได้
  • ข้อมูลที่ซ้ำกันจะถูกยกเลิก
  • ชุดนี้สร้างขึ้นโดยใช้ Hash-tables
  • เราสามารถลบได้เพียงองค์ประกอบเดียว โดยที่ตัววนซ้ำชี้อยู่

เรามาดูตัวอย่างกัน

ตัวอย่าง

#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

มัลติเซ็ตแบบไม่เรียงลำดับ

คุณสมบัติของเซตมีดังนี้ −

  • ข้อมูลสามารถวางในลำดับใดก็ได้
  • อนุญาตให้ใช้ข้อมูลซ้ำกันได้
  • ชุดนี้สร้างขึ้นโดยใช้ Hash-tables
  • เราสามารถลบได้เพียงองค์ประกอบเดียว โดยที่ตัววนซ้ำกำลังชี้อยู่

เรามาดูตัวอย่างกัน

ตัวอย่าง

#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