日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

C++ multimap容器访问同一键值元素的不同方法

發布時間:2024/9/5 综合教程 37 生活家
生活随笔 收集整理的這篇文章主要介紹了 C++ multimap容器访问同一键值元素的不同方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

multimap是一種多元map容器,允許一個鍵對應多個值。

本文介紹了multimap訪問同一鍵值元素的三種不同方法,詳細看下面代碼:

 1 typedef multimap<string,int>::size_type mstype;
 2 typedef multimap<string,int>::iterator mulit;
 3 multimap<string,int> mulmap;
 4 //插入元素
 5 mulmap.insert(make_pair("abc",2));
 6 mulmap.insert(make_pair("abc",3));
 7 mulmap.insert(make_pair("bcd",5));
 8 mulmap.insert(make_pair("bcd",7));
 9 
10 for(mulit mt=mulmap.begin();mt!=mulmap.end();mt++){
11     cout<<mt->first<<" "<<mt->second<<endl;
12 }
13 /*方式1:最麻煩的方式:
14 (1)通過iter=find()找到某個鍵對應元素的迭代器,如果該鍵值對應多個值,則返回指向第一個元素的迭代器。
15 (2)通過cn=count()返回對應鍵元素的個數
16 (3)以迭代器iter為起始位置,遍歷cn次
17 */
18 cout<<"find count 方式:"<<endl;
19 mulit mb=mulmap.find("abc");
20 mstype mt=mulmap.count("abc");
21 for(mstype tt=0;tt<mt;tt++,mb++){
22     cout<<mb->first<<" "<<mb->second<<endl;
23 }
24 /*方式2:upper_bound和lower_bound方式
25 通過lower_bound和upper_bound獲取指向一個鍵對應元素的迭代器范圍,其中
26 lower_bound返回指向鍵對應的第一個元素的迭代器位置
27 upper_bound返回指向這個鍵對應的最后一個元素的下一個位置的迭代器
28 */
29 cout<<"upper_bound lower_bound 方式:"<<endl;
30 mulit lower=mulmap.lower_bound("bcd");
31 mulit upper=mulmap.upper_bound("bcd");
32 for(mulit tm=lower;tm!=upper;tm++){
33     cout<<mb->first<<" "<<mb->second<<endl;
34 }
35 /*方式3:直接用equal_range方法返回用pair封裝的兩個迭代器,兩個迭代器類似于lower_bound和upper_bound返回的結果
36 */
37 typedef pair<mulit,mulit> pmulit;
38 pmulit pl=mulmap.equal_range("bcd");
39 for(mulit tm=pl.first;tm!=pl.second;tm++){
40     cout<<mb->first<<" "<<mb->second<<endl;
41 }

因此推薦用后兩種方式去獲取同一鍵值的所有元素。

總結

以上是生活随笔為你收集整理的C++ multimap容器访问同一键值元素的不同方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。