日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ primer 4th 第10章《关联容器》总结

發布時間:2024/7/19 c/c++ 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ primer 4th 第10章《关联容器》总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

10-1 關聯容器類型

map

關聯數組:元素通過鍵來存儲和讀取

set

大小可變的集合,支持通過鍵實現的快速讀取

multimap

支持同一個鍵多次出現的map類型

multimap

支持同一個鍵多次出現的set類型

?

10-2 pair類型提供的操作

pair<T1,T2> p1;

創建一個空的pair對象,它的兩個元素分別是T1T2類型,采用值初始化

pair<T1,T2> p1(v1, v2);

創建一個pair對象,它的兩個元素分別是T1T2類型,其中first成員初始化為v1,而second成員初始化為v2

make_pair(v1, v2);

v1v2值創建一個新的pair對象,其元素類型分別是v1v2的類型

p1 < p2

兩個pair對象之間的小雨運算,其定義遵循字典次序:如果p1.first<p2.first 或者 (p2.first<p1.first)&&p1.seond<p2.second,則返回true

p1 == p2

如果兩個pair對象的firstsecond成員依次相等,則這兩個對象相等。該運算使用其元素的==操作符

p.first

返回p中名為first的公有數據成員

p.second

返回p中名為second的公有數據成員

?

10-3 map的構造函數

map<k, v> m;

創建一個名為m的空map對象,其鍵和值的類型分別為kv

map<k, v> m(m2);

創建m2的副本mmm2必須有相同的鍵類型和值類型

map<k, v> m(b, e);

創建map類型的對象m,存儲迭代器be標記的范圍內所有元素的副本。元素的類型必須能轉換為pair<const k, v>

注:對于鍵類型,唯一的約束就是必須支持 < 操作符

?

10-4 map類定義的類型

map<K, V>::key_type

map容器中,用做索引的鍵的類型

map<K, V>::mapped_type

map容器中,鍵所關聯的值的類型

map<K, V>::value_type

一個pair類型,它的first元素具有const map<K, V>::key_type類型,而second元素則為map<K, V>::mapped_type類型

注:map迭代器進行解引用將產生pair類型的對象

?

10-5 map容器提供的insert操作

m.insert( e )

e是一個用在m上的value_type類型的值。如果鍵(e.first)不在m中,則插入一個值為e.second的元素;如果該鍵在m中已存在,則保持m不變。該函數返回一個pair類型對象,包含指向鍵為e.first的元素的map迭代器,以及一個bool類型的對象,表示是否插入了該元素

m.insert(beg, end)

begend是標記元素范圍的迭代器,其中的元素必須為m.value_type類型的鍵-值對。對于該范圍內的所有元素,如果它的鍵在m中不存在,則將該鍵及其關聯的值插入到m。返回void類型

m.insert(iter, e)

e是一個用在m上的value_type類型的值。如果鍵(e.first)不在m中,則創建新元素,并以迭代器iter為起點搜索新元素存儲的位置。返回一個迭代器,指向m中具有給定鍵的元素

?

10-6 不修改map對象的查詢操作

m.count(k)

返回mk的出現次數

m.find(k)

如果m容器中存在按k索引的元素,則返回指向該元素的迭代器。如果不存在,則返回超出末端迭代器

注:使用count檢查map對象中某鍵是否存在,如果存在,可用下標操作訪問該元素,實際上這指向了兩次查找。如果希望存在該元素就訪問,可用find

?

10-7 map對象中刪除元素

m.erase(k)

刪除m中鍵為k的元素。返回size_type類型的值,表示刪除的元素個數

m.erase(p)

m中刪除迭代器p所指向的元素。p必須指向m中確實存在的元素,而且不能等于m.end()。返回void類型

m.erase(b, e)

m中刪除一段范圍內的元素,該范圍由迭代器對be標記。be必須標記m中的一段有效范圍:即be都必須指向m中的元素或最后一個元素的下一位置。而且,be要么相等(此時刪除的范圍為空),要么b所指向的元素必須出現在e所指向的元素之前。返回void類型

?

10-8 返回迭代器的關聯容器操作

m.lower_bound(k)

返回一個迭代器,指向鍵不小于k的第一個元素

m.upper_bound(k)

返回一個迭代器,指向大于k的第一個元素

m.equal_range(k)

返回一個迭代器的pair對象

它的first成員等價于m.lower_bound(k)。而second成員則等價于m.upper_bound(k)

?

轉載于:https://www.cnblogs.com/crazyant/archive/2011/06/06/2073862.html

總結

以上是生活随笔為你收集整理的C++ primer 4th 第10章《关联容器》总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。