c++ - Strange runtime error when iterating over std::deque -
consider following piece of code:
1 typedef std::deque<int> mydeque_t; 2 mydeque_t mydeque; 3 4 mydeque_t::iterator start = mydeque.begin(); 5 6 (int = 0; != 1000; ++i) 7 mydeque.push_back(i); 8 9 (mydeque_t::iterator myint = start; myint != mydeque.end(); ++myint) 10 *myint += 1; when executing runtime error on line 10 (live example: http://ideone.com/juqaa). when change line 6 for (int = 0; != 100; ++i) code works fine.
the code fixed moving start definition (line 4) behind first loop, in example need stay before it. think should run fine, can explain me why not?
after call push_back(), iterators invalidated. deque::push_back():
appends given element value end of container. all iterators invalidated. no references invalidated.
guess: code works fine 100 , not 1000 internal storage of deque did not have reallocated accomodate 100 elements resulting in begin() iterator remaining valid.
Comments
Post a Comment