給定一張地圖,我需要檢索並操作兩個立即存儲的項目。 對我來說,在矢量上工作比較容易,因爲我可以做「iter + 1」或「iter-1」。 雖然對於地圖而言,我很幸運。迭代std :: map的更好方法
例如,我舉一個簡單的例子如下: 注意:在我的真實應用程序中,我不會簡單地減去這些數字。
int main()
{
map<char,int> mymap;
map<char,int>::iterator it;
mymap['b'] = 100;
mymap['a'] = 200;
mymap['c'] = 300;
// show content:
map<char,int>::iterator firstItem = mymap.begin();
map<char,int>::iterator secondItem = ++mymap.begin();
for (; secondItem != mymap.end(); ++firstItem, ++secondItem)
cout << secondItem->second - firstItem->second << endl;
return 0;
}
問題>有沒有更好的解決方案呢?
謝謝
你到底想幹什麼? 'std :: prev'和'std :: next'有幫助嗎? – Cameron
選擇容器類型取決於廣義用例。如果你做了很多這種類型的迭代,並且你不介意支付搜索性能的代價,那麼使用具有隨機訪問迭代器的容器可能是合理的。 – Chad
@Cameron,很好的瞭解這兩個操作符,但它僅適用於C++ 11。 – q0987