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

时间:2012-10-01 19:29:51

标签: c++ stl multimap

我有一个std::multimap,我正在使用前向迭代器进行迭代。

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

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

5 个答案:

答案 0 :(得分:11)

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

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

这只是C ++ 11。您需要添加<iterator>

另一种选择显而易见,但不太漂亮:

it = map.begin();
++it;
for(; it != map.end(); ++it) {
    // do something
}

同时查看std::advance

答案 1 :(得分:5)

似乎看起来更短

it = ++map.begin(); 

答案 2 :(得分:2)

std::multimap<int,char>::iterator it = map.begin();
//treat it here
++it
for(;it!=map.end();++it) {

}

答案 3 :(得分:1)

for(bool First=true, it=map.begin();it!=map.end();++it) {
    if (First) { do something; First=false; }
    else { do something else; }
}

或者,如果您愿意:

iterator it=map.begin();
if (it!=map.end()) { do something; ++it; }
for (; it!=map.end(); ++it) { do something }

答案 4 :(得分:1)

将for-initializer中的it = map.begin()更改为it = map.begin(), ++it