我有一個std::multimap
我正在迭代使用前向迭代器。C++從地圖的第二個元素迭代
std::multimap<int,char>::iterator it;
for(it=map.begin();it!=map.end();++it) {
// do something
}
現在我需要以不同的方式處理第一個元素,並從地圖的第二個元素開始迭代。我怎麼做?
我有一個std::multimap
我正在迭代使用前向迭代器。C++從地圖的第二個元素迭代
std::multimap<int,char>::iterator it;
for(it=map.begin();it!=map.end();++it) {
// do something
}
現在我需要以不同的方式處理第一個元素,並從地圖的第二個元素開始迭代。我怎麼做?
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
,太。
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()
在換初始化器it = map.begin(), ++it
。
也就是說,如果你沒有C++ 11。如果你這樣做,@jrok的解決方案更好。 –
似乎看起來更短
it = ++map.begin();
當然,如果地圖不爲空,這是唯一安全的! :) –