gpt4 book ai didi

c++ - 使用相同的键高效地迭代多个映射

转载 作者:太空宇宙 更新时间:2023-11-04 16:25:15 25 4
gpt4 key购买 nike

如果我有两个保证具有完全相同的键集的映射,我如何有效地遍历这两个映射?

例如,假设我有以下 map :

std::map<std::string, int> iMap;
std::map<std::string, std::vector<int> > vMap;

在某些时候,他们最终都得到了完全相同的一组 key 。我现在需要根据相应的 iMap 值更新 vMap 的所有值。想到的第一件事是这样的:

typedef map<string, int> map_t;
BOOST_FOREACH(map_t::value_type &p, iMap) {
vMap[p.first].push_back(p.second);
}

但是,考虑到我们正在有效地按顺序遍历键,我们必须查找 vMap[n] 的每个值似乎相当浪费。我们有什么办法可以利用它吗?

最佳答案

如果您绝对确定键是相同的,则可以同步迭代两个映射:

auto it1 = iMap.begin();
auto it2 = vMap.begin();

while (it1 != iMap.end())
{
it2->second.push_back(*it1);
++it1;
++it2;
}

关于c++ - 使用相同的键高效地迭代多个映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587087/

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