博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
map, hash_map, multimap的使用及区别
阅读量:6590 次
发布时间:2019-06-24

本文共 1030 字,大约阅读时间需要 3 分钟。

map对元素按照key按升序排序,比较的时候使用<操作符或者是程序员提供的比较函数。内置类型都定义了<操作符,可以直接作为key使用。自定义的类型如果要作为key,需要满足以下条件:

1. 可复制和可赋值(这是容器对元素的基本要求)

2. 元素类型定义了<操作符,或者定义一个专门的函数对象

struct _temp{int a, b;  bool operator<(const struct _temp &rhs) const  {    return a < rhs.a;  }} ts; ... map
my;

或者

struct _temp{    int a, b;        } ts;struct comparer{    bool operator()(const struct _temp &a1, const struct _temp &a2)    {        return a1.a < a2.a;    } } ... map
my;

hash_map(STL中叫unordered_map)使用一个hash函数计算key的hash值,并用另一个函数equal_to来判断两个key是否相等。如果要使用自定义类型作为key,需要定义哈希函数,==操作符或者一个函数对象比较。

struct _temp{    int a, b;    bool operator==(const struct _temp &rhs) const    {        return a==rhs.a && b == rhs.b;    }} ts;struct hashfun{    size_t operator()(const struct _temp &rhs) const    {        return rhs.a + rhs.b;    }};unordered_map
my;

multimap的使用与map类似,只是允许key相同。

map和multimap适合存储键有序的元素,hash_map适合存储键无序的元素。在内部实现上,map和multimap采用rb_tree。

 

转载于:https://www.cnblogs.com/segeon/archive/2012/09/12/2682473.html

你可能感兴趣的文章
SQL SERVER 2012 只能识别20个CPU的问题
查看>>
python中函数 reshape(-1,1)
查看>>
设备驱动基础学习--/proc下增加节点
查看>>
Java成员的访问权限控制
查看>>
设计模式(十)外观模式
查看>>
Java笔记(二)
查看>>
keynote代码高亮【转】
查看>>
400
查看>>
ES6之块级作用域
查看>>
jquery mobile
查看>>
从字节码层面,解析 Java 布尔型的实现原理
查看>>
Android使用adb命令
查看>>
Tomcat中的Session小结
查看>>
C/C++语言中Static的作用详述
查看>>
[Android Samples视频系列之ApiDemos] App-Activity-Recreate
查看>>
C++ WINDOWS下 wchar_t *和char * 相互转化总结篇
查看>>
LeetCode:Valid Number
查看>>
ASP开发基础
查看>>
mongodb远程连接访问
查看>>
MYSQL性能调优
查看>>