#include <iostream> #include <unordered_set> int main() { // 创建一个unordered_set实例并添加一些元素 std::unordered_set<int> mySet = {1, 2, 3, 4, 5}; // 使用迭代器遍历unordered_set并打印每个元素 for (auto it = mySet.begin(); it != mySet.end(); ++it...
class Hash = HashFunc<K>> class unordered_set { public: struct SetKeyOfT { const K& operator()(const K& key) { return key; } }; public: typedef typename HashBucket::HashTable<K, K, SetKeyOfT, Hash>::const_iterator iterator; typedef typename HashBucket::HashTable<K, K, SetKeyOfT...
注意:unordered_set和unordered_map本质上都是使用hash方法对元素进行存储和查找,而C++没有为vector,pair等定义默认hash方法,所以模板参数不能是vector,pair这类。除非你自己自定义一个对应的hash函数 头文件 #include<unordered_set> 1. 初始化 参考:http://www.cplusplus.com/reference/unordered_set/unordered_set/...
遍历unordered_set同样可以使用迭代器或者范围for循环来实现,时间复杂度为O(n)。 std::unordered_set<int> us = {1, 2, 3, 4, 5}; // 使用迭代器遍历unordered_set for (auto it = us.begin(); it != us.end(); ++it) { std::cout << *it << " "; } // 使用范围for循环遍历unordered_...
unordered_set小容器时表现不是很突出,但是随着元素增多,性能还是可以的。 map和unordered_map在小容器时表现还可以,但是随着元素增多,性能下降明显。 vector在大容器时,表现很糟糕。 中间插入 元素个数>15000 insert_mid_16384_highest 表现最差的还是vector,其次是unordered_map。 除去vector,看看其他容器的表现 ...
void test06(){ uint seed=1; vector<int> vec_tmp(60); for(int i=0;i<60;i++){ vec_tmp[i]=i; } clock_t startTime=clock(); unordered_set<int> set_new; for(int i=0;i<10000000;i++){ for(int j=0;j<60;j++){ auto m=vec_tmp[j]; } } clock_t endTime=clock(); cou...
当元素个数比较少(大概小于256)时,有序关联容器的性能比无序(unordered)关联容器要高(除了unordered_set)。 中间插入 元素个数>15000 insert_mid_16384_highest vector容器性能是最差的。再看下其他容器 insert_mid_16384 forward_list和list的性能是最好的。然后是deque和set。
c++中遍历不同数据结构的效率对比:1. 方式1:使用unordered_set的迭代器遍历,此方法效率较高,因为unordered_set底层使用哈希表实现,查找时间复杂度为O(1)。2. 方式2:使用set的迭代器遍历,此方法效率次于方式1。因为set底层使用红黑树实现,查找时间复杂度为O(logn)。3. 方式3:纯for循环遍历,...
除了map、multimap、set和multiset,其他容器的遍历性能都差不了太多。 查找 因为非关联容器的查找只能通过遍历,其效率和关联容器的查找没法比。所以我们只比较关联容器。 元素个数>15000 find_16384_highest set类要优于对应的map类容器。即set优于map;multiset优于multimap;unordered_set优于unordered_map;unordered_mul...
unordered_set::erase 1. 2. 3. 这个unorder暗示着,这两个头文件中类的底层实现---Hash。 也是因为如此,你才可以在声明这些unordered模版类的时候,传入一个自定义的哈希函数,准确的说是哈希函数子(hash function object)。 单向迭代器 哈希表的实现复杂了该容器上的双向遍历,似乎没有一种合适的方法能够做到高效...