2
此代碼在調試模式下使用Visual C++編譯器編譯時調用一個斷言。在C++中迭代但不是取消引用無效迭代器
std::vector<int> test;
++test.begin();
節目說:
Debug Assertion Failed!
...
Expression: vector iterator not incrementable.
對我來說,這個代碼是完全合法的,因爲我不打算取消引用的迭代器。問題是:這個行爲是否由The Standard未定義(或者可能是實現定義),或者不是?
但是我們被允許做一個無效指針,直到它不會被解除引用。這是明確的行爲。 – newbie 2015-03-31 14:26:20
@newbie:迭代器不一定是一個簡單的指針。 – 2015-03-31 14:27:15
我明白了。我評論你的第一個答案。引文解釋了一切,謝謝。 – newbie 2015-03-31 14:29:49