首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

晕了,地图跟multi地图到底有什么区别

2012-08-13 
晕了,map跟multimap到底有什么区别书上本来说得好好的,是一键对应一个实例就是map,当一个键对应多个实例,

晕了,map跟multimap到底有什么区别
书上本来说得好好的,是一键对应一个实例就是map,当一个键对应多个实例,则用multimap。
但是为何multimap<string, string>authors,这跟map有什么区别?我的理解就是map的第一个string是键,第二个string是实例子,那这个multimap不是对应多个实例吗?
不解,也不知道讲清楚了没?反正感觉没真正搞清楚!

[解决办法]
==============================================================
Map(mulitmap)
|
|->名称----->map
|->个性
| |------> ①map与set的最大区别在于map是一种特殊的set,它的所有元素都是pair<key,value>
| |------> ②map最大的特性在于map提供了下标subscript操作的能力,你可以向数组一样操作 | | map[key]来引用相应的值。这个除了方便以外同样也是问题的根源。
| |------> ③几乎所有针对map的操作都是基于key的。比如,排序就是通过比较key来进行的。
| |------> ④对于set成立的操作在map中基本上都成立
|
|->陷阱
| |------> ①如果你采用了这样的语句erase(pos)——其中的pos是个iterator,那么最好不要在 | | 对该pos最任何操作,应为erase(pos)已经将这个pos删除了,此后任何关于pos的操作| | 都视为定义的。这种情况要是发生在for循环中,for(pos=.begin(),pos!=.end | | (),pos++)就能解决问题了。
| |------> ②假设代码中有这样的语句,cout<<map[key],按理这是没有问题的,但是如果你的 | | key在map中原本是不存在的,那么这句代码会“自作聪明”的帮你在map中将上一个 | | 该key的value为default的元素,这恐怕不是件好事。
| |------> ③map[key]=value的操作要比insert(value)的方式慢。
|
|->说明------>multimap的操作与map大致一样,不同在于multimap允许有相同的key在容器中存在。
|
|->Type----->class
|->Include---><map>
|->Define---->map<key,value,optional compare ,optional>
|->Sub
|->Fun
|------>map和set基本具有相同的操作。
|------> 不同的是map的insert(elem)不再返回一个pair而是一个pos的iterator。 










==================================

>multimap的操作与map大致一样,不同在于multimap允许有相同的key在容器中存在。
 
[解决办法]
map不能有重复的键值对,即如果插入键相同的键值对,则将覆盖掉同键值的键值对。
multimap则不会覆盖。
[解决办法]
http://www.yolinux.com/TUTORIALS/CppStlMultiMap.htmlLZ看看对比说明
[解决办法]
map之能一一对应 multimap能一对多 比如:
1->a
2->b
1->c
就只能用multimap
[解决办法]
UP~
[解决办法]
晕了,这个问题也太简单了吧,建议重新复习《The C++ Standard Library》去
如果以multimap <string, string>authors,为例子,key是作者,值是书名,这种类型允许一个作者写多本书,而map一个作者只能写一本书
[解决办法]
map只能1对1的,multimap可以一个对应多个
multimap中,你的string的key,可以对应多个string
[解决办法]
multimap和map的区别在于容器可以存储多个相同的key

multiset和set的区别也是一样
[解决办法]
MAP是不能有重复的键值,就像在我们国家一个男人只能有一个老婆,男人就是KEY,老婆就是VALUE.
MULTIMAP是可以有重复的键值,就像一个男人可以有多个情人。
[解决办法]
multimap <string, string>authors第一个string是键第二个是键所对应的值,与map不同的就是multimap可以同一个键对应多个值。 

键 值
xiaoming 13212345678
xiaoming 13322222222
像这种情况键相同但是对应不同的值就得用multimap才行
[解决办法]
主要在于同一个key的处理上。
[解决办法]
学习了!

热点排行