multimap 使用
#include <map>
#include <iostream>
#include <string>
int main(int,char**)
{
std::multimap<std::string, size_t> people {{"Ann", 25},
{"Bill", 46}};
people.insert(std::pair<std::string,size_t>{"Jack", 77});
people.insert(std::pair<std::string,size_t>{"Jack", 34});
people.insert(std::pair<std::string,size_t>{"Jack", 45});
people.insert(std::pair<std::string,size_t>{"Jacky", 32});
people.insert(std::make_pair("Jill", 32));
people.insert(std::make_pair("Ann", 35));
people.insert(std::make_pair("Jack", 90));
people.insert({{"Tom",12},{"Tomy",56}});
std::string name {"Bill"};
auto iter = people.find(name);
if (iter!= people.end())
std::cout << name << " is " << iter->second << std::endl;
iter = people.find ("Ann");
if (iter != std::end(people))
std::cout << iter->first << " is " << iter->second <<std::endl;
//利用auto简洁声明迭代方式
auto nameRange=people.equal_range("Jack");
for(auto it=nameRange.first;it!=nameRange.second;++it){
std::cout<<it->first<<" => "<<it->second<<std::endl;
}
//完整声明形式
std::pair<std::multimap<std::string,size_t>::iterator,std::multimap<std::string,size_t>::iterator>nameRange_w;
nameRange_w=people.equal_range("Jack");
for(std::multimap<std::string,size_t>::iterator it=nameRange_w.first;it!=nameRange_w.second;it++){
std::cout<<it->first<<" => "<<it->second<<std::endl;
}
return 0;
}
运行结果: