C++ 中 Set 和 UnOrderSet 之间的区别

c++server side programmingprogramming

在 C++ 中,Set 和 UnOrderSet 都是用于存储数据以便于访问和插入的数据结构类型。根据这两种数据结构的特征,我们可以区分 Set 和 UnOrderSet

以下是 Set 和 UnOrderSet 之间的重要区别 −

Sr.不。KeySetUnOrderSet
1定义C++ 中的 Set 可以定义为一种关联容器,它将数据存储在键值对中,其中每个值元素必须是唯一的,因为元素的值可以标识它。另一方面,UnOrderSet 是 C++ STL(标准模板库)的一部分,被定义为与 Set 类似的关联容器,用于存储已排序的键值对,但与按排序顺序存储数据的 Set 不同,UnOrderSet 存储的数据不是按排序顺序存储的。
2排序如果是 Set,则数据按排序顺序存储。另一方面,如果是 UnOrderSet,则数据不是按排序顺序存储的顺序。
3重复值在 Set 中不允许存储重复值。另一方面,在 UnOrderSet 的情况下,重复值将被丢弃。
4实现集合是使用二叉搜索树实现的。然而,另一方面,UnOrderedSet 是使用哈希表创建的

示例

集合

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

Set

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

相关文章