【发布时间】:2022-07-06 19:16:19
【问题描述】:
我想要一个数组,每个元素的每个元素都以某种方式指示另一个可调整大小数组的某些元素 我试过了:
vector <int> a={1,2,3};
vector <int*> b={*(a[0]),*(a[1]),*(a[2]));
但是每次编辑向量 a 的大小,都会将自己复制到内存的空白位置,因此数组 b 中的指针链接到一个空白位置
【问题讨论】:
-
我理解您的问题(我认为),但该代码甚至可以编译吗?
-
你知道最大元素个数吗?如果是这样,那么只需
reserve有足够的空间来避免重新分配。 -
你可以尝试
&而不是*来获取a中元素的地址。但是无论如何,您都需要避免重新分配a(例如,如上所述使用reserve)。 -
相比之下,
std::list在大多数情况下要慢得多,但指向元素的指针不会失效——所以这可能是一种替代方案...... -
存储索引而不是指针。
标签: c++ arrays vector memory-address