C++中Set和UnOrderSet的区别
在C++中,Set和UnOrderSet都是用于存储数据以便于访问和插入的数据结构类型。根据这两种数据结构的特点,我们可以区分Set和UnOrderSet。
以下是Set和UnOrderSet之间的一些重要区别:
序号 | 关键点 | Set | UnOrderSet |
---|---|---|---|
1 | 定义 | C++中的Set可以定义为一种关联容器,它以键值对的形式存储数据,其中每个值元素必须唯一,因为元素的值标识了它。 | 另一方面,UnOrderSet是C++ STL(标准模板库)的一部分,定义为类似于Set的关联容器,它存储排序的键值对,但与按排序顺序存储数据的Set不同,UnOrderSet存储的数据不是按排序顺序存储的。 |
2 | 排序 | 对于Set,数据按排序顺序存储。 | 另一方面,对于UnOrderSet,数据不是按排序顺序存储的。 |
3 | 重复值 | 在Set中,不允许存储重复值。 | 另一方面,对于UnOrderSet,重复值会被丢弃。 |
4 | 实现 | Set使用二叉搜索树实现。 | 然而,另一方面,UnOrderedSet使用哈希表创建。 |
示例
Set
#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
广告