当前位置: 首页 > news >正文

unordered_map和unordered_set

1.unordered_set系列的使用

   1.1 unordered_set类的介绍

1.unordered_set的声明如下:

template < class Key, 
class Hash = hash<Key>, 
class Pred = equal_to<Key>, 
class Alloc = allocator<Key> 
> class unordered_set;

key就是unoredered_set底层关键字的类型

2.unordered_set默认要求key支持转换为整形

3.unordered_set默认要求key支持比较相等

4.一般情况下都不需要传后三个模版参数

5.unodered_set底层是用哈希桶来实现的,至于哈希桶在后面的文章会有所介绍,增删查改的效率为O(1),与set的相比,迭代器的遍历不再有序(根据unordered可以看出)

    1.2 unordered_set和set的使用差异

1. unoredered_set与set支持的增删查改是一样的,要想知道具体的内容可以看前面的文章,这里就不再说明了。

2.unoredr_set和set的第一个差异是对key的要求不同,set要求Key支持小于比较,而unordered_set要求Key支持转成整形且支持等于比较。

3.unoredered_set和set的第二个差异是迭代器的差异,set的iterator是双向迭代器,底层是红黑树,走有序的中序遍历,所以set的遍历是有序+去重。unordered_set是单向迭代器,底层是哈希表,迭代器的遍历是无序+去重。

4.unordered_set和set的第三个差异是性能的差异,unordered_set的增删查改的效率为O(1),而set增删查改的效率为O(logN),在绝大多数的场景下unordered_set的效率要比set的效率高。

    1.3 unordered_map和map的使用差异 

1.同样的,增删查改二者基本无异,这里就不一一介绍了。

2.unordered_map和map也有三点差异,与unordered_set和set一样,分别是key的要求不同,迭代器的差异,性能的差异。可以把unoreder_map当做unordered_set,map当做set,就可以知道每一个差异点的内容了,这里就不再说明一遍了。

    1.4 unordered_multimap/unordered_multiset

unordered_multimap/unordered_multiset跟multimap/multiset功能完全类似,⽀持Key冗余。


http://www.mrgr.cn/news/50698.html

相关文章:

  • Java:双列集合
  • Leetcode 1489. 找到最小生成树里的关键边和伪关键边
  • 正交标架坐标变换合同变换
  • 挖掘空间数据要素典型领域应用场景
  • OpenBayes 教程上新丨打光神器 IC-Light 上线,光影效果高度一致,快速拯救废片
  • 结构型-适配器模式
  • 【MySQL】表的操作
  • 从零实现llama3(学习)
  • 海外云手机:出海电商养号智能化方案
  • 【C++基础知识——C++ 头文件中能用std::cout输出信息吗?】
  • 智能驾驶仿真网络:现实与虚拟交汇的基石
  • 体面厂的分手应该体面
  • 基于Springboot+Vue的商城积分系统(含源码数据库)
  • 在Openshift(K8S)上通过EMQX Operator部署Emqx集群
  • 实景三维赋能自然资源精细化管理创新
  • 详解STL之 AVL tree --- “额外平衡条件的”二叉搜索树
  • Javascript扩展符号(...)使用说明
  • 腾讯图标点选模型识别
  • 10.3.1 QGIS多边形类型注释(Annotation)的应用与二次开发实现
  • 关于移动通信网络中各个组成部分的基础入门