C,基于第二个iter订购地图内容
发布时间:2020-12-16 04:52:32 所属栏目:百科 来源:网络整理
导读:我有如下地图 string word;int occurance;std::map std::string,std::mapstring,int map;map[word]["count"] = occurance; 使用迭代器映射输出. for(auto outer_iter=map.begin(); outer_iter!=map.end(); ++outer_iter) { for(auto inner_iter=outer_iter-s
我有如下地图
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)); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |