c++ - 迭代 std::map 的更好方法

标签 c++ stl

给定一张 map ,我需要检索和操作两个立即存储的项目。 对我来说,处理 vector 更容易,因为我可以执行“iter + 1”或“iter - 1”。 对于 map ,我运气不好。

比如我举个简单的例子如下: 注意:在我的实际应用中,我不会简单地减去这些数字。

int main ()
{
    map<char,int> mymap;
    map<char,int>::iterator it;

    mymap['b'] = 100;
    mymap['a'] = 200;
    mymap['c'] = 300;

    // show content:
    map<char,int>::iterator firstItem  = mymap.begin();
    map<char,int>::iterator secondItem = ++mymap.begin();

    for ( ; secondItem != mymap.end(); ++firstItem, ++secondItem )
        cout << secondItem->second - firstItem->second << endl;

    return 0;
}

问题>是否有更好的解决方案?

谢谢

最佳答案

不是在循环控制中递增两个迭代器(递增有点慢),只需分配 firstItem = secondItem 然后递增 secondItem

关于c++ - 迭代 std::map 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12803424/

相关文章:

c++ - Blitz++ 数组作为映射的键

c++ - 为什么 SGI STL 源代码使用#if 0?

c++ - constrain_hash 中的 unordered_set EXC_BAD_ACCESS

c++ - MessageBox C++ 错误

c++ - 如何使用 do while 循环中的标记值编写 while 循环?

c++ - QT - 未知的调试器类型 "No engine"

c++ - 在 switch 案例中实现函数调用的其他方式

c++ - 如何用 std::set 包含我的类

c++ - C++中动态数组的长度

c++ - "vector iterator not incrementable"set_intersection 运行时错误