存储指向动态数组元素的指针

Storing pointers to elements of a dynamic array

本文关键字:指针 数组元素 动态 存储      更新时间:2023-10-16

>我有两个数组,第一个数组由整数组成,另一个数组由结构组成,其中一个成员是指向第一个数组中给定元素的指针。

struct A {
...
int *ptr;
};
int arr[100];
vector<A>arr2;
void AddElementAndAssignPointer(int index) {
arr2.push_back({...});
arr2.ptr = &arr[index];
}

现在这种方法的限制是第一个数组的大小是静态的,我希望它是动态的。但是,如果我将其设为 std::vector,则在调整矢量大小并将内容复制到更大的数组中时,对该数组中元素的引用将丢失。

这个问题的可能解决方案是什么?

编辑:问题是我如何存储对数组元素的引用并同时使其动态。

编辑2:我正在创建一个半边缘网格结构。第一个数组由网格的顶点组成。第二个数组由网格的边缘组成。为了简化问题,我需要为每个边提供一个指向顶点的指针。顶点数组需要动态,因为用户会添加新的顶点。

我相信标准的解决方案是,而不是存储实际的指针或任何东西(因为它们可以在调整vector大小时移动(,而是存储对向量的引用和索引的size_t到向量中。