【发布时间】:2013-07-04 13:26:13
【问题描述】:
我有某个类的 std::vector,在我的程序中我有一些指向向量中几个项目的指针,问题是当我删除一个项目时,例如第一个项目,所有指针都是错误的,这是代码示例:
vector<int> numbers;
numbers.push_back(100);
numbers.push_back(200);
numbers.push_back(300);
int *pNum = & numbers[1]; // pNum pointer to 200
numbers.erase(numbers.begin()); // now pNum pointer to 300
我明白为什么会这样,问题是有没有办法解决这个问题?
【问题讨论】:
-
复制你想要的数据。
-
我希望
pNum始终是指向包含值 200 的单元格的指针 -
正在创建一个删除数据并更新指针选项的函数?如果有人删除值 200 会发生什么?
-
可能有点矫枉过正,为什么不用指针呢?所以,你的向量看起来像:
std::vector<std::unique_ptr<int>>,那么你不会被重定位击中...... -
@nim,我认为应该使用 shared_ptr,因为 200 它在 pNum 和数字之间共享。
标签: c++ arrays pointers containers stdvector