C++从地图的第二个元素迭代

Abh*_*nda 5 c++ stl multimap

我有一个std::multimap我正在迭代使用前向迭代器.

std::multimap<int,char>::iterator it;
for(it=map.begin();it!=map.end();++it) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

现在我需要以不同方式处理第一个元素,并从地图的第二个元素开始迭代.我怎么做?

jro*_*rok 11

std::multimap<int,char>::iterator it;

for(it = std::next(map.begin()); it != map.end(); ++it) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

这只是C++ 11.你需要包括<iterator>.

另一种选择很明显,但不太漂亮:

it = map.begin();
++it;
for(; it != map.end(); ++it) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

看看吧std::advance.

  • 当然,如果地图不是空的,这只是安全的!:) (3认同)

Tom*_*mas 5

看起来更短

it = ++map.begin(); 
Run Code Online (Sandbox Code Playgroud)