an*********@gmail.com wrote:
I have following code:
class ABC
{
..
...
int getValueA()
}
deque<ABC *ABCptrque;
deque<ABC*>::iterator it;
for (it=ABCptrque.end(); it !=ABCptrque.begin(); it--)
{
int m = (*it)->getValueA();
}
Program crashes at line: int m = (*it)->getValueA();
You can't dereference an iterator at the end-- remember that end() is
"one past" the last element of the container. Try a reverse iterator
instead:
for( deque<ABC*>::reverse_iterator it = ABCptrque.rbegin();
it != ABCptrque.rend(); ++it)
{
int m = (*it)->getValueA();
}
Or, if you insist on using a forward iterator:
for( it = ABCptrque.end(); it !=ABCptrque.begin(); )
{
--it; // decrement once before using
int m = (*it)->getValueA();
}
But you can probably see that the reverse iterator is a more natural fit
here.
-Mark