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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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時,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ù),編譯器會試圖自動推演,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+標準程序庫中

3、凡是“必須返回兩個值”的函數(shù), 也都會利用pair對象 classpair可以將兩個值視為一個單元。容器類別map和multimap就是使用pairs來管理其健值/實值(key/value)的成對元素。 pair被定義為struct,因此可直接存取pair中的個別值.1 / 3兩個pairs互相比較時, 第一個元素正具有較高的優(yōu)先級. 例: 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():無需寫出型別, 就可以生成一個pair對象 例: std:make_pair(42, ); 而不必費力寫成: std:pair(42, )當有必要對一個接受pair參數(shù)的函數(shù)傳遞兩個值時, make_pair()尤其顯得方便, void f(std:pair);void foo f(std:make_pair(42, ); /pass two values as pair 1 pair的應用pair是將2個數(shù)據(jù)組合成一個數(shù)據(jù),當需要這樣的需求時就可以使用pair,如stl中的map就是將key和value放在一起來保存。另一個應用是,當一個函數(shù)需要返回2個數(shù)據(jù)的時候,可以選

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

6、度也帶來了一些問題如:std:pair(1, 1.1);std:make_pair(1, 1.1);是不同的,第一個就是float,而第2個會自己匹配成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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論