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愈來愈大,到後面若是有須要進行全面遍歷的時候,這個時候就會很是的耗時並且是沒有沒有用的。

不知道是否是全部的平臺都是這個樣子的,我在嵌入式設備上是這個樣子的。

相關文章
相關標籤/搜索