C++ 在std :: map或std :: multimap中搜索
示例
有几种方法可以搜索中std::map或中的键std::multimap。
要获得第一次出现键的迭代器,find()可以使用该函数。end()如果密钥不存在,则返回。
std::multimap<int,int>mmp{{1,2},{3,4},{6,5},{8,9},{3,4},{6,7}};
autoit=mmp.find(6);
if(it!=mmp.end())
std::cout<<it->first<<","<<it->second<<std::endl;//印数:6、5
else
std::cout<<"价值不存在!"<<std::endl;
it=mmp.find(66);
if(it!=mmp.end())
std::cout<<it->first<<","<<it->second<<std::endl;
else
std::cout<<"价值不存在!"<<std::endl;//这行将被执行。
找到是否存在一个条目的另一种方式std::map或std::multimap使用count()功能,计数多少值与给定键关联。由于std::map每个键仅关联一个值,因此其count()功能只能返回0(如果不存在键)或1(如果存在)。对于std::multimap,count()可以返回大于1的值,因为可能有多个与同一个键关联的值。
std::map<int,int>mp{{1,2},{3,4},{6,5},{8,9},{3,4},{6,7}};
if(mp.count(3)>0)//3作为键存在于映射中
std::cout<<"钥匙存在!"<<std::endl;//这行将被执行。
else
std::cout<<"密钥不存在!"<<std::endl;
如果您只关心某个元素是否存在,那find绝对是更好的选择:它记录您的意图,并且对于multimaps,一旦找到第一个匹配元素,它就可以停止。
在的情况下std::multimap,可能会有多个具有相同键的元素。要获得此范围,请使用该equal_range()函数,该函数分别返回std::pair具有迭代器的下限(包括)和上限(不包括)。如果密钥不存在,则两个迭代器都将指向end()。
autoeqr=mmp.equal_range(6);
autost=eqr.first,en=eqr.second;
for(autoit=st;it!=en;++it){
std::cout<<it->first<<","<<it->second<<std::endl;
}
//印数:6、5
// 6,7