map應(yīng)用一例參考模板_第1頁
map應(yīng)用一例參考模板_第2頁
map應(yīng)用一例參考模板_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、word_count.insert(make_pair(footbar, 6); 這種寫法,怎么在vc6.0 編譯通不過?C/C+ code#include #include #include using namespace std;int main() map word_count; int occurs = 1000; string str(footbar); word_count.insert(make_pair(str, 6); / str直接為 footbar時(shí),vc6.0不能編譯通過 if (word_count.count(footbar) occurs = word_count

2、footbar; cout occurs endl; return 0;原因:C+的函數(shù)模板規(guī)定模板參數(shù)只能為int 型或const char*型,如果你不指定具體的模板參數(shù),編譯器會(huì)試圖自動(dòng)推演,6的數(shù)據(jù)類型是int,但字符串常量的數(shù)據(jù)類型不是int或const char*,所以推演失敗。另一種改法:make_pair(const char*)abc,6)make_pair (str, 6)的用法是最好的,其次是make_pair (string(abc), 6)再次是make_pair (const char*)abc, 6)pair and make_pairPairs C+標(biāo)準(zhǔn)程序庫中

3、凡是“必須返回兩個(gè)值”的函數(shù), 也都會(huì)利用pair對(duì)象 classpair可以將兩個(gè)值視為一個(gè)單元。容器類別map和multimap就是使用pairs來管理其健值/實(shí)值(key/value)的成對(duì)元素。 pair被定義為struct,因此可直接存取pair中的個(gè)別值.1 / 3兩個(gè)pairs互相比較時(shí), 第一個(gè)元素正具有較高的優(yōu)先級(jí). 例: namespace std template bool operator (const pair&x, const pair&y) return x.firsty.first | (y.firstx.first)&x.secondy.second); ma

4、ke_pair():無需寫出型別, 就可以生成一個(gè)pair對(duì)象 例: std:make_pair(42, ); 而不必費(fèi)力寫成: std:pair(42, )當(dāng)有必要對(duì)一個(gè)接受pair參數(shù)的函數(shù)傳遞兩個(gè)值時(shí), make_pair()尤其顯得方便, void f(std:pair);void foo f(std:make_pair(42, ); /pass two values as pair 1 pair的應(yīng)用pair是將2個(gè)數(shù)據(jù)組合成一個(gè)數(shù)據(jù),當(dāng)需要這樣的需求時(shí)就可以使用pair,如stl中的map就是將key和value放在一起來保存。另一個(gè)應(yīng)用是,當(dāng)一個(gè)函數(shù)需要返回2個(gè)數(shù)據(jù)的時(shí)候,可以選

5、擇pair。 pair的實(shí)現(xiàn)是一個(gè)結(jié)構(gòu)體,主要的兩個(gè)成員變量是first second 因?yàn)槭鞘褂胹truct不是class,所以可以直接使用pair的成員變量。2 make_pair函數(shù)template pair make_pair(T1 a, T2 b) return pair(a, b); 很明顯,我們可以使用pair的構(gòu)造函數(shù)也可以使用make_pair來生成我們需要的pair。 一般make_pair都使用在需要pair做參數(shù)的位置,可以直接調(diào)用make_pair生成pair對(duì)象很方便,代碼也很清晰。 另一個(gè)使用的方面就是pair可以接受隱式的類型轉(zhuǎn)換,這樣可以獲得更高的靈活度。靈活

6、度也帶來了一些問題如:std:pair(1, 1.1);std:make_pair(1, 1.1);是不同的,第一個(gè)就是float,而第2個(gè)會(huì)自己匹配成double。make_pair (STL Samples)/ mkpair.cpp/ compile with: /EHsc/ Illustrates how to use the make_pair function./ Functions: make_pair - creates an object pair containing two data/ elements of any type.#include #include using namespace std;/* STL pair data type containing int and float*/typedef struct pair PAIR_IF;int main(void) PAIR_IF pair1=make_pair(18,3.14f); cout pair1.first pair1.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論