Sha*_*hin 0 c++ iteration optimization map
如果我有两张地图可以保证拥有完全相同的密钥集,那么如何才能有效地迭代两张地图呢?
例如,假设我有以下地图:
std::map<std::string, int> iMap;
std::map<std::string, std::vector<int> > vMap;
Run Code Online (Sandbox Code Playgroud)
在某些时候,他们最终都拥有完全相同的密钥集.我现在需要vMap根据相应的iMap值更新所有值.首先想到的是这样的事情:
typedef map<string, int> map_t;
BOOST_FOREACH(map_t::value_type &p, iMap) {
vMap[p.first].push_back(p.second);
}
Run Code Online (Sandbox Code Playgroud)
然而,vMap[n]考虑到我们有效地按顺序查看键,我们必须查找每个值,这似乎相当浪费.我们有什么方法可以利用这个吗?
如果您完全确定键是相同的,则可以以锁步方式遍历两个映射:
auto it1 = iMap.begin();
auto it2 = vMap.begin();
while (it1 != iMap.end())
{
it2->second.push_back(*it1);
++it1;
++it2;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1496 次 |
| 最近记录: |