C++ primer 4th 第10章《关联容器》总结
| 表10-1 關聯容器類型 | |
| map | 關聯數組:元素通過鍵來存儲和讀取 |
| set | 大小可變的集合,支持通過鍵實現的快速讀取 |
| multimap | 支持同一個鍵多次出現的map類型 |
| multimap | 支持同一個鍵多次出現的set類型 |
?
| 表10-2 pair類型提供的操作 | |
| pair<T1,T2> p1; | 創建一個空的pair對象,它的兩個元素分別是T1和T2類型,采用值初始化 |
| pair<T1,T2> p1(v1, v2); | 創建一個pair對象,它的兩個元素分別是T1和T2類型,其中first成員初始化為v1,而second成員初始化為v2 |
| make_pair(v1, v2); | 以v1和v2值創建一個新的pair對象,其元素類型分別是v1和v2的類型 |
| p1 < p2 | 兩個pair對象之間的小雨運算,其定義遵循字典次序:如果p1.first<p2.first 或者 !(p2.first<p1.first)&&p1.seond<p2.second,則返回true |
| p1 == p2 | 如果兩個pair對象的first和second成員依次相等,則這兩個對象相等。該運算使用其元素的==操作符 |
| p.first | 返回p中名為first的公有數據成員 |
| p.second | 返回p中名為second的公有數據成員 |
?
| 表10-3 map的構造函數 | |
| map<k, v> m; | 創建一個名為m的空map對象,其鍵和值的類型分別為k和v |
| map<k, v> m(m2); | 創建m2的副本m,m與m2必須有相同的鍵類型和值類型 |
| map<k, v> m(b, e); | 創建map類型的對象m,存儲迭代器b和e標記的范圍內所有元素的副本。元素的類型必須能轉換為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) | beg和end是標記元素范圍的迭代器,其中的元素必須為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) | 返回m中k的出現次數 |
| 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中刪除一段范圍內的元素,該范圍由迭代器對b和e標記。b和e必須標記m中的一段有效范圍:即b和e都必須指向m中的元素或最后一個元素的下一位置。而且,b和e要么相等(此時刪除的范圍為空),要么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章《关联容器》总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3d--美工建模须知【转htt
- 下一篇: s3c2440移植MQTT