c++中,在multimap中查找元素(一键多值)

包含的库:

#include<map>


测试代码:

 multimap<string,int> multimapSTRint;
 multimapSTRint.insert(make_pair("strtrest",125));
 multimapSTRint.insert(make_pair("strtrest",126));
 multimapSTRint.insert(make_pair("strtrest",12));
 multimapSTRint.insert(make_pair("1",1));
 multimapSTRint.insert(make_pair("2",2));
 multimapSTRint.insert(make_pair("3",3));
 multimapSTRint.insert(make_pair("3",32));
 multimapSTRint.insert(make_pair("3",33));
 multimapSTRint.insert(make_pair("strtrest",122));
 multimapSTRint.insert(make_pair("strtrest",123));
 multimapSTRint.insert(make_pair("strtrest",124));


方法1:(利用map排序,将同一个key排序,连续)

 typedef multimap<string,int>::size_type sz_type;
 sz_type entries = multimapSTRint.count("strtrest");//找到元素的个数
 multimap<string,int>::iterator iter = multimapSTRint.find("strtrest");
 for (sz_type cnt = 0;cnt!=entries;++cnt,++iter)
 {
  int  strtest;
  strtest = iter->second;
 }

方法2:(lower_bound返回第一个示例的迭代器;upper_bound返回最后一个示例下一个位置的迭代器)

 typedef multimap<string,int>::iterator iterTest;
 iterTest beg = multimapSTRint.lower_bound("strtrest");
 iterTest end = multimapSTRint.upper_bound("strtrest");
 while(beg != end)
 {
  int Nstr = beg->second;
  ++beg;
 }


方法3:(与方法2中使用的类似,只是用pair简化代码)

 pair<iterTest,iterTest> pos = multimapSTRint.equal_range("strtrest");
 while(pos.first != pos.second)
 {
  int Nstr = pos.first->second;
  ++pos.first;
 }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值