第十一章 關聯容器 學習筆記

2021-09-28 07:37:04 字數 3168 閱讀 2333

11.1、使用關聯容器

單詞計數程式,程式擴充套件,忽略大小寫和標點

#include#include#include#include#includeusing namespace std;

string &trans(string &s)

return s;

}int main(int argc, char *ar**)

mapword_count; //string 到 count 對映

string word;

while(in >> word)

++word_count[trans(word)]; //單詞出現次數加一

for(const auto &w : word_count) //對map中的每個元素

//列印結果

cout << w.first << "出現了" << w.second << "次" << endl;

return 0;

}

定義乙個map,將單詞與乙個行號的list關聯,list中儲存的是單詞所出現的行號。

#include#include#include#include#include#include#includeusing namespace std;

string &trans(string &s)

return s;

}int main(int argc, char *ar**)

map> word_lineno; //單詞到行號的對映

string line;

string word;

int lineno = 0;

while(getline(in, line))

}for(const auto &w : word_lineno)

return 0;

}

multisetbookstore(compareisbn);

//等價於

typedef bool (*pf)(const sales_data &, const sales_data &);

multisetbookstore(compareisbn);

pair型別(標頭檔案utility)

//練習11.12、編寫程式,讀入string 和 int的序列,將每個string和int存入乙個pair中,pair儲存在乙個vector中

#include#include#include#include#include#includeusing namespace std;

int main(int argc, char *ar**)

vector> data; //pair的vector

string s;

int v;

while(in >> s && in >> v) //讀取乙個字串和乙個整數

//三種不同的方式

data.push_back();

v));

v));

for(const auto &d : data) //列印單詞行號

cout << d.first << " " << d.second << endl;

return 0;

}

11.3、關聯容器操作

檢測insert的返回值

insert(或emplace)返回的值依賴於容器型別和引數。對於不包含重複關鍵字的容器,新增單一元素的insert和emplace版本返回乙個pair,告訴我們插入操作是否成功。pair的first成員是乙個迭代器,指向具有給定關鍵字的元素。second是乙個bool值,指出元素是否插入成功還是已經存在容器中。

刪除元素

map的下標操作

使用map下標操作的返回值

訪問元素

//練習11.31

#include#include#include#includeusing namespace std;

void remove_author(multimap&books,

const string &author)

void print_books(multimap&books)

int main(int argc, char *ar**)

); books.insert();

books.insert();

books.insert();

print_books(books);

remove_author(books, "張三");

remove_author(books, "金庸");

print_books(books);

return 0;

}

#include #include #include #include #include using namespace std;

mapbuildmap(ifstream &map_file)

const string &transform(const string &s, const map&m)

void word_transform(ifstream &map_file, ifstream &input)

cout << endl; //完成一行的轉換

}}int main(int argc, const char *ar**)

無序容器

第十一章 關聯容器

元素按關鍵字來儲存和訪問。關鍵字 值 對 關鍵字map 儲存關鍵字 值對 set 儲存關鍵字 multimap 關鍵字可重複出現的map multiset 關鍵字可重複出現的set unordered map 用雜湊函式組織的map unordered set 用雜湊函式組織的set unorder...

Android學習筆記 第十一章

第十一章 使用對話方塊 11.2探索不同型別的對話方塊 android自帶的對話方塊 dialog 所有對話方塊的基類 alertdialog 帶有1,2,3個按鈕的控制項 characterpickerdialog 用於顯示和選擇與基本字元相關聯的聲調字元的dialog datepickdialo...

python學習筆記 第十一章

import library files import requests 傳送乙個http請求 send http requests res requests.get check error 檢查錯誤 res.raise for status check state code 檢驗狀態碼 print...