怎么做网站截图制作动画的软件
2026/6/20 10:11:00 网站建设 项目流程
怎么做网站截图,制作动画的软件,公司做网站有什么用,环球贸易网官网unordered_set系列的使⽤ unordered_set和unordered_multiset参考⽂档 参考⽂档 unordered_set类的介绍 unordered_set的声明如下#xff0c;Key就是unordered_set底层关键字的类型unordered_set默认要求Key⽀持转换为整形#xff0c;如果不⽀持或者想按⾃⼰的需求⾛可以…unordered_set系列的使⽤unordered_set和unordered_multiset参考⽂档参考⽂档unordered_set类的介绍unordered_set的声明如下Key就是unordered_set底层关键字的类型unordered_set默认要求Key⽀持转换为整形如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现⽀持将Key转成整形的仿函数传给第⼆个模板参数unordered_set默认要求Key⽀持⽐较相等如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现⽀持将Key⽐较相等的仿函数传给第三个模板参数unordered_set底层存储数据的内存是从空间配置器申请的如果需要可以⾃⼰实现内存池传给第四个参数。⼀般情况下我们都不需要传后三个模板参数unordered_set底层是⽤哈希桶实现增删查平均效率是迭代器遍历不再有序为了跟set区分所以取名unordered_set。O(1)set和unordered_set的功能⾼度相似只是底层结构不同有⼀些性能和使⽤的差异这⾥只讲差异部分。template class Key, // unordered_set::key_type/value_type class Hash hashKey, // unordered_set::hasher class Pred equal_toKey, // unordered_set::key_equal class Alloc allocatorKey // unordered_set::allocator_type class unordered_set;unordered_set和set的使⽤差异查看⽂档我们会发现unordered_set的⽀持增删查且跟set的使⽤⼀模⼀样关于使⽤我们这⾥就不再赘述和演⽰了。unordered_set和set的第⼀个差异是对key的要求不同set要求Key⽀持⼩于⽐较⽽unordered_set要求Key⽀持转成整形且⽀持等于⽐较要理解unordered_set的这个两点要求得后续我们结合哈希表底层实现才能真正理解也就是说这本质是哈希表的要求。unordered_set和set的第⼆个差异是迭代器的差异set的iterator是双向迭代器unordered_set是单向迭代器其次set底层是红⿊树红⿊树是⼆叉搜索树⾛中序遍历是有序的所以set迭代器遍历是有序去重。⽽unordered_set底层是哈希表迭代器遍历是⽆序去重。unordered_set和set的第三个差异是性能的差异整体⽽⾔⼤多数场景下unordered_set的增删查改更快⼀些因为红⿊树增删查改效率是⽽哈希表增删查平均效率是具体可以参看下⾯代码的演⽰的对⽐差异。pairiterator,bool insert ( const value_type val ); size_type erase ( const key_type k ); iterator find ( const key_type k );#includeunordered_set #includeunordered_map #includeset #includeiostream using namespace std; void test_set1() { setint s; s.insert(3); s.insert(1); s.insert(5); s.insert(7); for (auto e : s) { cout e ; } cout endl; unordered_setint us; us.insert(3); us.insert(1); us.insert(5); us.insert(7); for (auto e : us) { cout e ; } cout endl; } int test_set2() { const size_t N 1000000; unordered_setint us; setint s; vectorint v; v.reserve(N); srand(time(0)); for (size_t i 0; i N; i) { //v.push_back(rand()); // N⽐较⼤时重复值⽐较多 v.push_back(rand()i); // 重复值相对少 //v.push_back(i); // 没有重复有序 } size_t begin1 clock(); for (auto e : v) { s.insert(e); } size_t end1 clock(); cout set insert: end1 - begin1 endl; size_t begin2 clock(); us.reserve(N); for (auto e : v) { us.insert(e); } size_t end2 clock(); cout unordered_set insert: end2 - begin2 endl; int m1 0; size_t begin3 clock(); for (auto e : v) { auto ret s.find(e); if (ret ! s.end()) { m1; } } size_t end3 clock(); cout set find: end3 - begin3 - m1 endl; int m2 0; size_t begin4 clock(); for (auto e : v) { auto ret us.find(e); if (ret ! us.end()) { m2; } } size_t end4 clock(); cout unorered_set find: end4 - begin4 - m2 endl; cout 插⼊数据个数 s.size() endl; cout 插⼊数据个数 us.size() endl endl; size_t begin5 clock(); for (auto e : v) { s.erase(e); } size_t end5 clock(); cout set erase: end5 - begin5 endl; size_t begin6 clock(); for (auto e : v) { us.erase(e); } size_t end6 clock(); cout unordered_set erase: end6 - begin6 endl endl; return 0; } int main() { test_set2(); return 0; }unordered_map和map的使⽤差异查看⽂档发现unordered_map的⽀持增删查改且跟map的使⽤⼀模⼀样unordered_map和map的第⼀个差异是对key的要求不同map要求Key⽀持⼩于⽐较⽽unordered_map要求Key⽀持转成整形且⽀持等于⽐较要理解unordered_map的这个两点要求得后续结合哈希表底层实现才能真正理解也就是说这本质是哈希表的要求。unordered_map和map的第⼆个差异是迭代器的差异map的iterator是双向迭代器unordered_map是单向迭代器其次map底层是红⿊树红⿊树是⼆叉搜索树⾛中序遍历是有序的所以map迭代器遍历是Key有序去重。⽽unordered_map底层是哈希表迭代器遍历是Key⽆序去重。unordered_map和map的第三个差异是性能的差异整体⽽⾔⼤多数场景下unordered_map的增删查改更快⼀些因为红⿊树增删查改效率是⽽哈希表增删查平均效率是具体可以参看下⾯代码的演⽰的对⽐差异。pairiterator,bool insert ( const value_type val ); size_type erase ( const key_type k ); iterator find ( const key_type k ); mapped_type operator[] ( const key_type k );unordered_multimap/unordered_multisetunordered_multimap/unordered_multiset跟multimap/multiset功能完全类似⽀持Key冗余。unordered_multimap/unordered_multiset跟multimap/multiset的差异也是三个⽅⾯的差异key的要求的差异iterator及遍历顺序的差异性能的差异。unordered_xxx的哈希相关接⼝Buckets和Hash policy系列的接⼝分别是跟哈希桶和负载因⼦相关的接⼝

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询