下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C+ Primer第 10 章學(xué)習(xí)筆記第 1 0 章:關(guān)聯(lián)容器關(guān)聯(lián)容器( associative container )支持通過(guò)鍵來(lái)高效地查找和讀取元素。學(xué)習(xí)摘錄 093:關(guān)聯(lián)容器和順序容器的本質(zhì)差別關(guān)聯(lián)容器通過(guò)鍵(key)存儲(chǔ)和讀取元素;順序容器則通過(guò)元素在容器中的位置順序存儲(chǔ)和訪問(wèn)元素。學(xué)習(xí)摘錄 094:關(guān)聯(lián)容器的主要特點(diǎn)關(guān)聯(lián)容器的獨(dú)特之處在于支持鍵的使用。關(guān)聯(lián)容器根據(jù)鍵的次序排。在迭代遍歷關(guān)聯(lián)容器時(shí), 我們可以確保按鍵的順序訪問(wèn)元素, 而與元素在容器中的存放 位置完全無(wú)關(guān)。 (與插入順序也無(wú)關(guān))學(xué)習(xí)摘錄 095:關(guān)聯(lián)容器的類型 1. map 關(guān)聯(lián)數(shù)組;元素通過(guò)鍵來(lái)存儲(chǔ)和讀取 2. set
2、大小可變的集合,支持通過(guò)鍵實(shí)現(xiàn)的快速讀取 3. multimap 支持同一個(gè)鍵多次出現(xiàn)的 map 類型 4. multiset 支持同一個(gè)鍵多次出現(xiàn)的 set 類型學(xué)習(xí)摘錄 096:兩種基本關(guān)聯(lián)容器的基本特點(diǎn)- 1. map 的元素以鍵值(key-value )對(duì)的形式組織。 附:鍵,用作元素在 map 的索引。 2. set 僅包含一個(gè)鍵,能有效地支持關(guān)于某個(gè)鍵是否存在的查詢。學(xué)習(xí)摘錄 097:四種關(guān)聯(lián)容器需要注意的地方 1. set 和 map 類型的對(duì)象所包含的元素都具有不同的鍵,不允許為同一個(gè)鍵添加第二 個(gè)元素。 2. multimap 和 multiset 類型允許多個(gè)元素?fù)碛邢嗤?/p>
3、鍵, 即用于一個(gè)鍵必須對(duì)應(yīng)多個(gè)實(shí) 例的情況下。 (這兩種類型不支持下標(biāo)運(yùn)算)第一節(jié): pair 類型 #include 學(xué)習(xí)摘錄 098:pair 的創(chuàng)建與初始化 p a i r elem(“OK”, 1/1h0o);lds a string and an int pairstring, vector line; / holds string and vector學(xué)習(xí)摘錄 099:pair 對(duì)象的操作 pair 類,可直接訪問(wèn)其數(shù)據(jù)成員:成員都是公有的,分別命名為first 和 second pair elem; elem.first =“OK”; elem.second = 3; cout
4、elem.first elem.second; / 就這樣,就給它們賦值了。學(xué)習(xí)摘錄 100 :生成新的 pair 對(duì)象 (make_pair) pair next_auth; string first, last; while(cin first last) / generate a pair from first and last next_auth = make_pair(first, last); / process next_auth.第三節(jié): map 類型 #include map 類型通??衫斫鉃椤瓣P(guān)聯(lián)數(shù)組”通過(guò)鍵獲取值,鍵值相關(guān)聯(lián)。學(xué)習(xí)摘錄 101:鍵類型的約束 默認(rèn)情況下標(biāo)準(zhǔn)
5、庫(kù)使用鍵類型定義 操作符來(lái)實(shí)現(xiàn)鍵的比較。 所用的比較函數(shù)必須在鍵類型上定義嚴(yán)格弱排序(strict weak ordering )摘錄有想 101 :這也就是說(shuō), map 中的 first 類型必須支持 (小于)操作符。學(xué)習(xí)摘錄 102: map 類定義的類型 map:key_type 在 map 容器中,用作索引的鍵的類型 map:mapped_type 在 map 容器中,鍵所關(guān)聯(lián)的值的類型 map:value_type 一個(gè) pair 類型,它的 first 元素具有 key_type 類型, second 元素 具有mapped_type 類型學(xué)習(xí)摘錄 103:map 類定義類型的訪問(wèn)
6、方法及需要注意的地方當(dāng)使用了 map:value_type 時(shí),該類型中的 key_type 類型是 const 性質(zhì),不可修改。 當(dāng)使用了 map:iterator 時(shí),該類型中的 key_type 類型是 const 性質(zhì),不可修改。 摘錄有想 103 : 即 map ok; map:value_typevt; map:iterator = ok.begin(); vt - first; 只能讀取,不能賦值。iterator - first 也是只能讀取不能賦值。學(xué)習(xí)摘錄 104 :下標(biāo)在 map 中的行為 假如定義了一個(gè)名為 ok 的 map 對(duì)象 用下標(biāo)操作 ok “in ” = 會(huì)
7、12 有以下結(jié)果: 當(dāng) in 存在,賦 ok - second 值為 12;- 當(dāng) in 不存在,新建(即插入)” irS素并賦值為 12. 摘錄有想 104 :與順序容器不同的一點(diǎn)是,用下標(biāo)訪問(wèn)有可能會(huì)使 map 容器添加一個(gè)新的元素。學(xué)習(xí)摘錄 1 05:map 中常用的 insert 操作 m.insert(make_pair( “ok” ,12); m.insert(map:value_type(“ok” , 1);m.inert(map: iterator a = m.begin(), map:iterator b=+a );這三種操作,返回的都是 void 類型。學(xué)習(xí)摘錄 106:查
8、找 map 中的元素 m.find(k); 返回迭代器, 存在,返回符合位置的迭代器, 不存在,返回超出末端迭代器。 m.count(k); 返回 m 中 k 的出現(xiàn)次數(shù)。摘錄有想 106 : count 操作根據(jù) map 的性質(zhì),只能回返回 0 或 1.學(xué)習(xí)摘錄 107 :從 map 中刪除元素 / erase of a key returns number of element removed if(word_count.erase(removal_word) ) cout “ ok: “ removal_word “ removedn ”; else cout “ oops: “ rem
9、oval_word “ not found! n ”; m.erase(k) 刪除 m 中鍵為 k 的元素。返回 size_type 類型的值,表示刪除的元素個(gè)數(shù)。第五節(jié): multimap 和 multiset 類型學(xué)習(xí)摘錄 108: multimap 和 multiset 類型元素的添加 由于鍵不要求是唯一的, 因此每次調(diào)用 insert總會(huì)添加一個(gè)元素。 multimap authors; / adds first elemt with key a authors.insert(make_pair( string(“ a” ), string( “ b” ) ); ok: adds se
10、cond element with key a authors.insert(make_pair(string(“ a” ), string( “ c” ) );學(xué)習(xí)摘錄 109: multimap 和 multiset 類型元素的刪除帶有一個(gè)鍵參數(shù)的 erase 版本將刪除擁有該鍵的 “所有”元素,并返回刪除元素的個(gè)數(shù)。 multimap :size_typecnt = authors.erase(“ a” );學(xué)習(xí)摘錄 110: multimap 和 multiset 類型元素的查找第一種方法 直接見(jiàn)實(shí)例,當(dāng)使用 iter與 find 結(jié)合時(shí), iter 能保存所有 find 找到的鍵的結(jié)
11、果。/ author we ll look forstringsearch_item(“ A” );typedefmultimap:size_typesz_type; sz_type entries = authors.count(search_item);/ get iterator to the first entry for this author multimap: iterator iter =authors.find(search_item);/ loop through the number of entries there are for this author for(sz_
12、typecnt = 0; cnt != entries; +cnt,+iter) cout second end; / print each title 上例中,count 函數(shù)求出某鍵出現(xiàn)次數(shù), 而 find則返回一個(gè)迭代器,指向第一個(gè)正在查 找的實(shí)例。學(xué)習(xí)摘錄 110: multimap 和 multiset 類型元素的查找第二種方法 m.lower_bound(k) 返回一個(gè)迭代器,指向鍵不小于 k 的第一個(gè)元素 m.upper_bound(k) 返回一個(gè)迭代器,指向鍵大于 k 的第一個(gè)元素/ definitions of authors and search_item as above
13、/ beg and end denote range of elements for this author typedefmultimap:iteratorauthors_it; authors.it beg = authors.lower_bound(search_item); authors.it end =authors.upper_bound(search_item);/ loop through the number of entries there are for this author while( beg != end)cout second endl; / print ea
14、ch title+beg;摘錄有想 110 :這里利用了迭代器取得元素在 multimap 中的區(qū)間, 能這樣操作是因?yàn)椋?在 multimap 中, 它的元素是以“鍵”的 (小于)的順序排序的學(xué)習(xí)摘錄 111: multimap 和 multiset 類型元素的查找第三種方法 m.equal_range(k) 返回一個(gè)迭代器的 pair 對(duì)象,它的 first 成員等價(jià)于 m.lower_bound(k) , 它的second 成員等價(jià)于 m.upper_bound(k);直接見(jiàn)實(shí)例: typedefmultimap:iterator authors_it;/ definitions of authors and search_item as above/ pos holds iterators that denote range of elements for this key pair pos =authors.equal_range(search_item);/ loop through the number of entries there are for this author while(pos.first != pos.second)cou
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 裝修施工安全協(xié)議書范本
- 2025年房地產(chǎn)中介服務(wù)協(xié)議書3篇
- 2024版塔吊施工勞務(wù)協(xié)議條款示例版B版
- 2024施工合同小型工程范本:水利工程建設(shè)項(xiàng)目3篇
- 二零二五版工廠廢棄物處理與資源化利用合作協(xié)議2篇
- 2024年財(cái)產(chǎn)分配協(xié)議
- 2024版工程行業(yè)綜合合作發(fā)展合同版
- 二零二五年度冷鏈倉(cāng)儲(chǔ)倉(cāng)單質(zhì)押反擔(dān)保合作協(xié)議3篇
- 二零二五年度標(biāo)準(zhǔn)磚節(jié)能減排改造項(xiàng)目合同2篇
- 二零二五年度城市基礎(chǔ)設(shè)施建設(shè)用自卸車租賃合同3篇
- 2024年大學(xué)英語(yǔ)四級(jí)真題CET及答案解析
- 網(wǎng)安民警個(gè)人工作總結(jié)
- 黃金買賣合同范本
- 米-伊林《十萬(wàn)個(gè)為什么》閱讀練習(xí)+答案
- 碎屑巖油藏注水水質(zhì)指標(biāo)及分析方法
- 【S洲際酒店婚禮策劃方案設(shè)計(jì)6800字(論文)】
- 醫(yī)養(yǎng)康養(yǎng)園項(xiàng)目商業(yè)計(jì)劃書
- 《穿越迷宮》課件
- 《C語(yǔ)言從入門到精通》培訓(xùn)教程課件
- 2023年中國(guó)半導(dǎo)體行業(yè)薪酬及股權(quán)激勵(lì)白皮書
- 2024年Minitab全面培訓(xùn)教程
評(píng)論
0/150
提交評(píng)論