如果我有两个保证具有完全相同的键集的映射,我怎样才能有效地遍历两个映射?
例如,假设我有以下地图:
std::map<std::string, int> iMap;
std::map<std::string, std::vector<int> > vMap;
在某些时候,它们最终都会得到完全相同的一组键。我现在需要vMap
根据相应的值更新 的所有值iMap
。首先想到的是这样的:
typedef map<string, int> map_t;
BOOST_FOREACH(map_t::value_type &p, iMap) {
vMap[p.first].push_back(p.second);
}
vMap[n]
然而,考虑到我们正在有效地按顺序遍历键,我们必须查找每个值似乎相当浪费。我们有什么办法可以利用这一点吗?