先簡單介紹一下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愈來愈大,到後面若是有須要進行全面遍歷的時候,這個時候就會很是的耗時並且是沒有沒有用的。
不知道是否是全部的平臺都是這個樣子的,我在嵌入式設備上是這個樣子的。