gpt4 book ai didi

C++,基于第二个 iter 的 Order map 内容

转载 作者:可可西里 更新时间:2023-11-01 18:36:08 25 4
gpt4 key购买 nike

我有如下 map

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->second 值来显示 map 。

我该怎么做?

最佳答案

最简单的使用方法(除非分析另有说明)是在需要打印时简单地制作一张由内而外的 map :

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));
}
}

然后你只需循环遍历倒置 map 并正常打印即可。

编辑:我认为你可以通过使用成对的set来获得你想要的双重排序:

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 的 Order map 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11847712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com