c – 如何知道何时重新分配向量的内部数组?

我有一个包含很多元素的std :: vector.由于向量很大,我将指针存储到另一个向量中的某些特定元素,以便能够更快地访问它们.但随着向量的增长,有时它的内部容器会被重新分配,导致我的所有指针都变得无效.

有没有办法知道这种情况何时发生?这样我就可以更新其他列表中的指针.

最佳答案
你不应该存储指针,你应该存储索引:

而不是:

var1 = &vector[0];
var2 = &vector[13];

并访问* var1,* var2

你应该存储:

i1 = 0;
i2 = 13;

和访问向量[i1],向量[i2]

注意:如果使用修饰符方法,您仍应小心:

> pop_back()(使最后一个位置无效)
> erase(i)(将所有索引移位大于i)
>等……

(你的第一种方法有同样的警告)

转载注明原文:c – 如何知道何时重新分配向量的内部数组? - 代码日志