C++---CHAPTER 11: ASSOCIATIVE-CONTAINER

小結(jié)

關(guān)聯(lián)容器通過關(guān)鍵字查找和提取元素。對關(guān)鍵字的使用將關(guān)聯(lián)容器與順序容器區(qū)分開來,順序容器中是通過位置訪問元素的。

標(biāo)準(zhǔn)庫定義了8個關(guān)聯(lián)容器,每個容器:

  • 是一個map或者是一個set。map保存關(guān)鍵字-值對;set只保存關(guān)鍵字。
  • 要求關(guān)鍵字唯一或不要求。
  • 保持關(guān)鍵字有序或不保證有序。
  1. 允許重復(fù)關(guān)鍵字的容器的名字都包含有multi,而使用哈希技術(shù)的容器的名字都以unordered開頭。set是一個有序集合,其中每個關(guān)鍵字只可以出現(xiàn)一次;而unordered_multiset則是一個無序的關(guān)鍵字集合,其中關(guān)鍵字可以出現(xiàn)多次。

使用關(guān)聯(lián)容器

  • 使用map
    定義一個map需要指定關(guān)鍵字和值的類型;
    map中提取的pair是一個模板類型,保存兩個名為firstsecond的成員。
int main() {
  map<string,size_t> word_count;
  string word;
  while(cin>>word && word!="stop")
    ++word_count[word];
  for(const auto &w: word_count)
    cout << w.first << " occurs " << w.second
    << ((w.second > 1) ? " times" : "time") << endl;
}
  • 使用set:
    find調(diào)用返回一個迭代器,如果為找到,find返回尾后迭代器。
  map<string,size_t> word_count;
  //給定類型;列表初始化關(guān)聯(lián)容器
  set<string> exclude={"The", "but","And"};
  string word;
  while(cin>>word && word!="stop")
    if(exclude.find(word)==exclude.end())
        ++word_count[word];

關(guān)聯(lián)容器概述

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 使用關(guān)聯(lián)容器 2. 關(guān)聯(lián)容器概述2.1 定義關(guān)聯(lián)容器2.2 關(guān)鍵字類型的要求2.3 pair類型 3. 關(guān)聯(lián)...
    MrDecoder閱讀 538評論 0 0
  • STL部分 1.STL為什么廣泛被使用 C++ STL 之所以得到廣泛的贊譽(yù),也被很多人使用,不只是提供了像vec...
    杰倫哎呦哎呦閱讀 4,466評論 0 9
  • 23.1 關(guān)聯(lián)容器介紹 關(guān)聯(lián)容器內(nèi)部的元素都是排好序的,有以下四種。 set:排好序的集合,不允許有相同元素。 m...
    飛揚code閱讀 915評論 1 4
  • C++ 標(biāo)準(zhǔn)模板庫(STL) 作者:AceTan,轉(zhuǎn)載請標(biāo)明出處! 0x00 何為STL## STL(Standa...
    AceTan閱讀 5,141評論 3 44
  • 關(guān)聯(lián)容器和順序容器的本質(zhì)區(qū)別在于:關(guān)聯(lián)容器中的元素是按關(guān)鍵字來保存和訪問的,而順序容器是按它們在容器中的位置來順序...
    夢中睡覺的巴子閱讀 285評論 0 0

友情鏈接更多精彩內(nèi)容