今天看完了set,multimap,multiset關聯容器,回顧一下:
與map不同的還有不支援下標操作。set容器由於只有鍵值,所以適合作為排除集使用。
multimap 與 multiset
顧名思義,是多值的map容器與set容器,也就是乙個鍵值對應多個值。
對於multimap與multiset的刪除操作,由於乙個鍵對應多個專案,所以帶有乙個鍵引數的erase函式會刪除跟這個鍵關聯的所有元素。但是帶有迭代器或迭代器範圍的erase函式只會刪除迭代器所指示的元素。
由於乙個鍵不是唯一對應,所以查詢乙個元素變得比較複雜。
一共提供了三種方式:
(1).根據multimap與multiset的記憶體儲存方式,乙個鍵下面的所有元素都是按照順序方式存放的。我們根據前面提供的find()與count()函式實現操作。
string serthitem("gaoteng
");mulitimap athors;
athors.insert(make_pair("
gaoteng
","c++ primer
"));
athors.insert(make_pair("
gaoteng
","opengl
"));
multimap::size_type count = athors.count(serthitem);
multimap::iterator iter = athors.find(serthitem);
for(multimap::size_type cnt = 0;cnt != count;++cnt,++iter)
coutmultimap與multiset提供三個關於迭代器的操作
obj.lower_bound(k);//
返回乙個迭代器,指向鍵值不小於k的元素
obj.upper_bound(k);//
返回乙個迭代器,指向鍵值大於k的元素
obj.equal_bound(k);//
返回乙個pair物件,first成員等價於obj.lower_bound(k),second成員等價
//於obj.upper_bound(k)
下面重寫上面的例子程式
typedef multimap::interator authors_it;authors_it beg= author.lower_bound(serthitem),
end = author.upper_bound(serthitem);
while(beg!=end)
通過上面的三種方式,實現對某乙個元素的查詢,明白了做一切東西都不是有唯一的路徑,以後要多思考,多想問題。
跟著寵物學健身
貓有著無比柔軟和輕巧的身段,狗則充滿活力 動作靈活,它們的一些行為動作均可讓我們模仿,這麼做對健身大有好處 學貓狗走路。學 狗步 像狗那樣,四肢落地。用右手和左腳 左手和右 替伸出,移動身體前行。每天堅持走20步。可緩解長久站立或行走引起的腰痛 胃下垂 痔瘡及下肢腫脹等,對防治腰痛尤其有效。邁 貓步...
set容器 map容器
簡介 本質 set和multiset區別 構造 賦值 include void printset set int s cout endl 構造和賦值 void test01 intmain 總結 函式原型 include void printset set int s cout endl 大小 vo...
《C primer》 順序容器
順序容器 vector 支援快速隨機訪問 list 支援快速插入 刪除 deque 雙端佇列 順序容器介面卡 stack 後進先出 lifo 棧 queue 先進先出 fifo 棧 priority queue 有優先順序管理的佇列 容器元素型別必須滿足條件 1.支援賦值運算,2.物件可以賦值 因為...