C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C,基于第二个iter订购地图内容大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有如下地图
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));
    }
}

大佬总结

以上是大佬教程为你收集整理的C,基于第二个iter订购地图内容全部内容,希望文章能够帮你解决C,基于第二个iter订购地图内容所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: