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

包含的库:

#include


测试代码:

 multimap 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::size_type sz_type;
 sz_type entries = multimapSTRint.count("strtrest");//找到元素的个数
 multimap::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::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 pos = multimapSTRint.equal_range("strtrest");
 while(pos.first != pos.second)
 {
  int Nstr = pos.first->second;
  ++pos.first;
 }





你可能感兴趣的:(c++中,在multimap中查找元素(一键多值))