C++11新特性(38)- 无序关联容器

零基础入门微信小程序开发 (2020 版)
零基础轻松入门,快速完成自己的小程序!
面向对象思考

C++11之前的关联容器


在C++11之前的关联容器一共有四种。


首先是两种最基本的类型:map和set。map中保存的是关键字-值的组合,而set中只保存关键字。


map和set中的关键字不允许重复,一旦相同的关键字重新写入,则原来的内容被覆盖。如果希望关键字可以重复,可以使用multimap和multiset。


用图表表示就是下面这样。



由于这些关联容器的存储位置是根据比较运算符决定的,所以也成为有序关联容器。


无序关联容器


C++11另外引入了4种无序关联容器(unordered associative container)。这些容器将存储组织为一组桶,根据哈希值将数据映射到桶。与有序关联容器类似,无序关联容器也可以用同样的标准分类:



除了哈希管理操作以外,无序容器还提供了与有序容器相同的操作。也就是说有序容器和无序容器可以互换。


无序容器的优势


用一句话概括,就是通常情况下,无序容器通常会有更好的性能。下面用一段程序来确认这个结论。


从实际的结果来看,使用无序关联容器时的操作时间不到使用有序关联容器时的一半。


作者观点


除了提高亲和力,提高效率也是C++努力的方向。



觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值