C++ map下标访问的问题

先简单介绍一下map,C++中的map属于STL的范畴,经过key-value的方式保存。数组

map的插入,插入map有两种方式,一种是调用insert方法:多线程

map<int, int> m1;线程

m1.insert(pair<int, int>(1, 20));it

第二种方式能够经过相似数组赋值的方式。遍历

m1[1] = 20;map

 

元素的访问方式也有两种方式:方法

一种是经过迭代的方式:项目

map<int,int> m;嵌入式

map<int,int>::iterator iter;iterator

m[1] = 20;

m[2] = 21;

iter = m.find(1);

if(iter != m.end())

{

//find it!

}

 

第二种方式是经过数组发方式访问value

map<int,int> m;

int value = m[1];

 

可是map的下标访问和迭代的方式访问有什么不同的地方呢。

从代码上看使用数组比较方便,可是数组访问有一个很是很差的事情,好比当map中不存在某一个key值时,经过数组的方式访问,它会将整个key值插入到map中,而且插入的value是一个默认值。在作一个项目的时候须要在适当的时候删除一些元素,咱们代码是多线程的,在删除以后又经过key去查找当前的值在不在就致使此key再次出如今map中,致使map愈来愈大,到后面若是有须要进行全面遍历的时候,这个时候就会很是的耗时并且是没有没有用的。

不知道是否是全部的平台都是这个样子的,我在嵌入式设备上是这个样子的。

相关文章
相关标签/搜索