考虑以下代码:
1 typedef std::deque<int> mydeque_t;
2 mydeque_t mydeque;
3
4 mydeque_t::iterator start = mydeque.begin();
5
6 for (int i = 0; i != 1000; ++i)
7 mydeque.push_back(i);
8
9 for (mydeque_t::iterator myint = start; myint != mydeque.end(); ++myint)
10 *myint += 1;
执行它时,我总是在第 10 行遇到运行时错误(现场示例:http: //ideone.com/juQAA)。但是,当我将第 6 行更改for (int i = 0; i != 100; ++i)
为代码时工作正常。
通过将start
定义(第 4 行)移到第一个 for 循环后面可以很容易地修复代码,但在我的示例中,我需要它保留在它之前。但是即使这样,我认为它应该运行良好,谁能向我解释为什么它不能运行?