ใน C ++ ทั้ง Set และ UnOrderSet เป็นประเภทของโครงสร้างข้อมูลที่ใช้ในการจัดเก็บข้อมูลเพื่อให้เข้าถึงและแทรกได้ง่าย บนพื้นฐานของลักษณะของโครงสร้างข้อมูลทั้งสองนี้ เราสามารถแยกแยะระหว่าง Set และ UnOrderSet
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่าง Set และ UnOrderSet -
ซีเนียร์ เลขที่ | คีย์ | ตั้งค่า | UnOrderSet |
---|---|---|---|
1 | คำจำกัดความ | การตั้งค่าในภาษา C++ สามารถกำหนดเป็นประเภทของคอนเทนเนอร์ที่เชื่อมโยงซึ่งเก็บข้อมูลในคู่ของค่าคีย์และองค์ประกอบค่าแต่ละรายการจะต้องไม่ซ้ำกัน เนื่องจากค่าขององค์ประกอบจะระบุค่านั้น | ในทางกลับกัน UnOrderSet เป็นส่วนหนึ่งของ C++ STL (ไลบรารีเทมเพลตมาตรฐาน) และถูกกำหนดให้เป็นคอนเทนเนอร์ที่เชื่อมโยงเช่น Set ที่จัดเก็บคู่ของค่าคีย์ที่เรียงลำดับ แต่ต่างจาก Set ซึ่งเก็บข้อมูลตามลำดับการเรียงลำดับ UnOrderSet เก็บข้อมูลที่ไม่เรียงลำดับ . |
2 | การเรียงลำดับ | กรณี Set data ถูกจัดเก็บตามลำดับ | ในทางกลับกัน ในกรณีที่ UnOrderSet ข้อมูลจะไม่ถูกจัดเรียงลำดับ |
3 | ค่าที่ซ้ำกัน | ในการตั้งค่าซ้ำกันไม่ได้รับอนุญาตให้ได้รับการจัดเก็บ | ในทางกลับกัน ในกรณีที่ค่าที่ซ้ำกันของ UnOrderSet ถูกละทิ้ง |
4 | การนำไปใช้ | ชุดถูกใช้งานโดยใช้แผนผังการค้นหาแบบไบนารี | อย่างไรก็ตาม UnOrderedSet ถูกสร้างขึ้นโดยใช้ Hash-tables |
ตัวอย่าง
ตั้งค่า
#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; } }
ผลลัพธ์
Item: 11 Item: 22 Item: 23 Item: 33 Item: 41 Item: 44 Item: 55 Item: 66 Item: 77 Item: 88 Item: 99
ตัวอย่าง
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; } }
ผลลัพธ์
Item: 11 Item: 55 Item: 22 Item: 66 Item: 33 Item: 44 Item: 77 Item: 88 Item: 99 Item: 23 Item: 41