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

来源:互联网 发布:海尔阿里云电视刷系统 编辑:程序博客网 时间:2024/05/20 21:56

包含的库:

#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;
 }





0 0