【发布时间】:2015-07-27 17:53:44
【问题描述】:
我试图在C++ 中使用向量。我正在尝试使用迭代器在指定位置插入一个元素,然后使用迭代器再次删除一些元素。但是在对这两个操作使用相同的迭代器时出现错误。这是我的代码 -
#include <iostream>
#include <vector>
#include <cctype>
using namespace std;
int main()
{
vector <int> A(10);
for (int i=0;i<A.size();i++)
{
A[i]=i+1;
}
vector<int>::iterator p=A.begin();
p+=2;
A.insert(p,1,55);
A.erase(p,p+2);
for (int i=0;i<A.size();i++)
{
cout << A[i] <<"\n";
}
return 0;
}
这给了我以下输出:
*** Error in `./temp': double free or corruption (out): 0x00000000017d4040 ***
55
3
4
5
6
7
8
9
10
Aborted (core dumped)
如果我在A.erase 之前添加以下两行,我会得到正确答案。
p=A.begin();
p+=2;
A.erase(p,p+2);
那么,如果p仍然指向同一个元素,因为它的值没有改变,为什么我需要重新设置p的值。
【问题讨论】:
标签: c++