STL中map容器的元素插入

2021-06-05 06:29:39 字數 1652 閱讀 8056

stl中的map容器是我經常用的,但是因為map跟別的容器不太一樣,每次用的時候對於map中元素的插入方式總是忘卻,故而發篇博文,提醒我也提醒所有人map容器的三種插入方式:

第一種:用insert函式插入pair資料。下面舉例說明:

#include

#include

#include

using namespace std;

int main()

}第二種:用insert函式插入value_type資料,下面舉例說明:

#include

#include

#include

using namespace std;

int main()

}第三種:用陣列方式插入資料,下面舉例說明:

#include

#include

#include

using namespace std;

int main()}

以上三種用法,雖然都可以實現資料的插入,但是它們是有區別的,當然了第一種和第二種在效果上是完成一樣的,用insert函式插入資料,在資料的插入上涉及到集合的唯一性這個概念,即當map中有這個關鍵字時,insert操作是插入資料不了的,但是用陣列方式就不同了,它可以覆蓋以前該關鍵字對應的值,用程式說明:

mapstudent.insert(map::value_type (1, "student_one"));

mapstudent.insert(map::value_type (1, "student_two"));

上面這兩條語句執行後,map中1這個關鍵字對應的值是「student_one」,第二條語句並沒有生效,那麼這就涉及到我們怎麼知道insert語句是否插入成功的問題了,可以用pair來獲得是否插入成功,程式如下

pair::iterator, bool> insert_pair;

insert_pair = mapstudent.insert(map::value_type (1, "student_one"));

我們通過pair的第二個變數來知道是否插入成功,它的第乙個變數返回的是乙個map的迭代器,如果插入成功的話insert_pair.second應該是true的,否則為false。

下面給出完成**,演示插入成功與否問題:

#include

#include

#include

using namespace std;

int main()

else

insert_pair = mapstudent.insert(pair(1, "student_two"));

if(insert_pair.second == true)

else

map::iterator  iter;

for(iter = mapstudent.begin(); iter != mapstudent.end(); iter++) }

大家可以用如下程式,看下用陣列插入在資料覆蓋上的效果

#include

#include

#include

using namespace std;

int main()

}

stl 向容器中插入元素

描述 構造插入迭代器,可以通過該迭代器對容器插入元素。函式定義 template class container std insert iterator inserter container c,typename container iterator i template class contain...

STL中map與hash map容器的選擇

實際上這個問題不光c 會遇到,其他所有語言的標準容器的實現及選擇上都是要考慮的。做應用程式你可能覺得影響不大,但是寫演算法或者核心 就要小心了。今天改進 順便又來溫習基礎功課了。還記得herb sutter那極有味道的 c 對話系列 麼,在其中 產生真正的hash物件 這個故事裡就講了map的選擇。...

STL中的關聯式容器 map(對映)

map,即 對映 map是關聯容器的一種,具體實現採用了紅黑樹的平衡二叉樹的資料結構。它提供一對一 其中第乙個稱為關鍵字key,每個關鍵字只能在map 現一次,第二個稱為該關鍵字的值value 的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。由於是利用...