跟著 C Primer 學set容器》

2022-03-25 18:09:12 字數 1408 閱讀 3349

今天看完了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.物件可以賦值 因為...