我有如下地图
string word; int occurance; std::map< std::string,std::map<string,int> > map; map[word]["count"] = occurance;
使用迭代器映射输出.
for(auto outer_iter=map.begin(); outer_iter!=map.end(); ++outer_iter) { for(auto inner_iter=outer_iter->second.begin(); inner_iter!=outer_iter->second.end(); ++inner_iter) { std::cout << outer_iter->first << '\t' << inner_iter->second << std::endl; } }
我想通过订购inner_iter->第二个值来显示地图.
我该怎么做?
解决方法
最简单的使用方法(除非分析表明不是这样)是在需要打印时简单地制作一个由内到外的地图:
std::multimap<int,std::string> inverse_map; for(auto outer_iter=map.begin(); outer_iter!=map.end(); ++outer_iter) { for(auto inner_iter=outer_iter->second.begin(); inner_iter!=outer_iter->second.end(); ++inner_iter) { inverse_map.insert(std::make_pair(inner_iter->second,outer_iter->first)); } }
然后你只需循环倒置的地图并正常打印.
编辑:我认为您可以使用一组对来获得您想要的双重排序:
std::set<std::pair<int,std::string> > inverse_map; for(auto outer_iter=map.begin(); outer_iter!=map.end(); ++outer_iter) { for(auto inner_iter=outer_iter->second.begin(); inner_iter!=outer_iter->second.end(); ++inner_iter) { inverse_map.insert(std::make_pair(inner_iter->second,outer_iter->first)); } }
原文地址:https://www.jb51.cc/c/119928.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。