Given a map, I need to retrieve and operate two immediately stored items.
To me, working on a vector is litter easier since I can do “iter + 1” or “iter – 1”.
While for map, I am out of luck.
For example, I give a simple example as follows:
Note: in my real application, I don’t simply subtract those numbers.
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;
}
Question> Is there a better solution for this?
Thank you
Instead of incrementing both iterators in the loop control (incrementing is a bit slow), just assign
firstItem = secondItemthen incrementsecondItem.