1. unordered_map

unordered_map的底层是一个防冗余的哈希表(采用除留余数法)。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,时间复杂度为O(1);而代价仅仅是消耗比较多的内存。

1.1. unordered_map 与map的区别?使用场景

构造函数:unordered_map 需要hash函数,等于函数;

​ map只需要比较函数(小于函数).

存储结构:unordered_map 采用hash表存储,

​ map一般采用红黑树(RB Tree) 实现。因此其memory数据结构是不一样的。

总体来说,unordered_map 查找速度会比map快,而且查找速度基本和数据数据量大小,属于常数级别;而map的查找速度是log(n)级别。并不一定常数就比log(n)小,hash还有hash函数的耗时,明白了吧,如果你考虑效率,特别是在元素达到一定数量级时,考虑考虑unordered_map 。但若你对内存使用特别严格,希望程序尽可能少消耗内存,那么一定要小心,unordered_map 可能会让你陷入尴尬,特别是当你的unordered_map 对象特别多时,你就更无法控制了,而且unordered_map 的构造速度较慢。

2. unordered_set

2.1. unordered_map、unordered_set的常用函数

unordered_map.begin()     //返回指向容器起始位置的迭代器(iterator) 
unordered_map.end()       //返回指向容器末尾位置的迭代器 
unordered_map.cbegin()     //返回指向容器起始位置的常迭代器(const_iterator) 
unordered_map.cend()      //返回指向容器末尾位置的常迭代器 
unordered_map.size()      //返回有效元素个数 
unordered_map.insert(key)   //插入元素 
unordered_map.find(key)    //查找元素,返回迭代器
unordered_map.count(key)   //返回匹配给定主键的元素的个数
Copyright © ershouche-FE 2019 all right reserved,powered by Gitbook文件修订时间: 2022-02-28 22:48:38

results matching ""

    No results matching ""