c++multimap问题,假设我有一些键值对<charA,charB>,我想让程序告诉我charA有那些值,而且重复了几次谢谢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++multimap问题,假设我有一些键值对<charA,charB>,我想让程序告诉我charA有那些值,而且重复了几次谢谢相关的知识,希望对你有一定的参考价值。

<aaa,b>
<aab,v>
<ff,a>
<aaa,t>
<aaa,wq>
<ff,fa>
...
比如说是如上值,charA一共有aaa aab ff,其中aaa出现了3次 aab出现了1次 ff出现了2次
怎么编程序?
我的<charA,charB>都是上文传下来的参数,不是上边给这些固定值,我是要读一个未知的数据库 我并不知道搜集到charA是什么值

//multimap这样使用
typedef multimap<string,string> MulStr;
MulStrdatas;
datas.insert(make_pair("aaa","b"));
datas.insert(make_pair("aaa","v"));
datas.insert(make_pair("ff","a"));
datas.insert(make_pair("aaa","t"));
datas.insert(make_pair("aaa","wq"));
datas.insert(make_pair("ff","fa"));
pair<MulStr::iterator, MulStr::iterator>  p = datas.equal_range("aaa");
for (MulStr::iterator  i=p.first; i!=p.second; ++i)

    cout<<it->first<<" "<<it->second<<endl;

追问

我的都是上文传下来的参数,你明白我意思么,不是上边给这些固定值,我是要读一个未知的数据库

参考技术A 楼上“9527坏蛋”的回答就是方法所在。结合你另一个问题的意思,可以理解为上文传下来
的参数<charA,charB>是通过vector传下来的吗?并且vector中存的一个结构体,里面有两个成员,即A和B?追问

我打算用map获得不重复的key,用multimap获得重复的key,再迭代对比这两个map

参考技术B void fun(const multimap<char,char>&r,char a)
for(auto m:r)
if(m.frist==a)
//该值为所需之一


auto ite=r.find(a);
while(ite!=r.end())
if(ite->frist!=a)break;
//该跌代器指向所需值之一


追问

我的都是上文传下来的参数,你明白我意思么,不是上边给这些固定值,我是要读一个未知的数据库 我并不知道搜集到charA是什么值

以上是关于c++multimap问题,假设我有一些键值对<charA,charB>,我想让程序告诉我charA有那些值,而且重复了几次谢谢的主要内容,如果未能解决你的问题,请参考以下文章

C++---map和set的使用

C++---map和set的使用

反转字典中键值对的顺序(Python)[重复]

从字典中提取键值对的子集?

STL —— multimap的用法详解

键值对的聚类