std::multimap
前方反復子を使用して反復処理を行っているがあります。
std::multimap<int,char>::iterator it;
for(it=map.begin();it!=map.end();++it) {
// do something
}
ここで、最初の要素を別の方法で扱い、マップの 2 番目の要素から反復を開始する必要があります。それ、どうやったら出来るの?
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
。
短く見えるらしい
it = ++map.begin();
std::multimap<int,char>::iterator it = map.begin();
//treat it here
++it
for(;it!=map.end();++it) {
}
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 }
it = map.begin()
for-initializer を に変更しit = map.begin(), ++it
ます。