5

std::multimap前方反復子を使用して反復処理を行っているがあります。

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

ここで、最初の要素を別の方法で扱い、マップの 2 番目の要素から反復を開始する必要があります。それ、どうやったら出来るの?

4

5 に答える 5

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

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

これは C++11 のみです。を含める必要があります<iterator>

もう 1 つのオプションは明らかですが、あまりきれいではありません。

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

もご覧くださいstd::advance

于 2012-10-01T19:32:53.247 に答える
6

短く見えるらしい

it = ++map.begin(); 
于 2012-10-01T21:01:30.037 に答える
2
std::multimap<int,char>::iterator it = map.begin();
//treat it here
++it
for(;it!=map.end();++it) {

}
于 2012-10-01T19:34:03.527 に答える
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 }
于 2012-10-01T19:34:24.120 に答える
1

it = map.begin()for-initializer を に変更しit = map.begin(), ++itます。

于 2012-10-01T19:38:50.013 に答える