C++ 遍历std :: map或std :: multimap

示例

std::map或std::multimap可以通过以下方式遍历:

std::multimap< int , int > mmp{ {1, 2}, {3, 4}, {6, 5}, {8, 9}, {3, 4}, {6, 7} };
                               
//基于范围的循环-自C ++ 11起
for(const auto &x: mmp) 
    std::cout<<x.first<<":"<<x.second<< std::endl;

//转发循环的迭代器:它将循环遍历第一个元素到最后一个元素
//it will be a std::map< int, int >::iterator
for (auto it = mmp.begin(); it != mmp.end(); ++it)
std::cout<< it->first <<":"<< it->second << std::endl; //用迭代器做点什么

//向后循环的迭代器:它将通过最后一个元素循环到第一个元素
//it will be a std::map< int, int >::reverse_iterator
for (auto it = mmp.rbegin(); it != mmp.rend(); ++it)
std::cout<< it->first <<" "<< it->second << std::endl; //用迭代器做点什么

在对astd::map或a进行迭代时std::multimap,auto首选使用以避免不必要的隐式转换(有关更多详细信息,请参见此SO答案)。