以下是一段很简单的向vector中插值的代码
#include<iostream>
#include<vector>
using namespace std;
int main() {
vector<int> v;
v.push_back(1);
v.push_back(2);
// v.insert(v.begin(), 3);
vector<int>::iterator it = v.begin();
v.insert(v.begin(), 3);
while (it != v.end()) {
cout << *it << endl;
++it;
}
return 0;
}
请问为什么这样是错误的, 把v.insert(v.begin(), 3);
加到注释那里就是正确的?
我的猜测是vector每次新增元素的时候其实是去找了一块新的内存地址, 而it
是在新增元素之前取的, 它是一个指向旧地址头部的指针, 所以在vecotr insert之后就会变成一个野指针, 然而后面的逻辑操作仍然是在用it
这个指针, 所以才会发生错误?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…