【发布时间】:2012-09-17 05:09:12
【问题描述】:
如果我有两个保证具有完全相同的键集的映射,我如何有效地遍历两个映射?
例如,假设我有以下地图:
std::map<std::string, int> iMap;
std::map<std::string, std::vector<int> > vMap;
在某些时候,它们最终会得到完全相同的一组键。我现在需要根据对应的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] 的每个值似乎相当浪费。我们有什么办法可以利用这一点?
【问题讨论】:
标签: c++ optimization map iteration