【问题标题】:Array, which elements links to elements of another array数组,其中元素链接到另一个数组的元素
【发布时间】:2022-07-06 19:16:19
【问题描述】:

我想要一个数组,每个元素的每个元素都以某种方式指示另一个可调整大小数组的某些元素 我试过了:

vector <int> a={1,2,3};
vector <int*> b={*(a[0]),*(a[1]),*(a[2]));

但是每次编辑向量 a 的大小,都会将自己复制到内存的空白位置,因此数组 b 中的指针链接到一个空白位置

【问题讨论】:

  • 我理解您的问题(我认为),但该代码甚至可以编译吗?
  • 你知道最大元素个数吗?如果是这样,那么只需 reserve 有足够的空间来避免重新分配。
  • 你可以尝试&amp;而不是*来获取a中元素的地址。但是无论如何,您都需要避免重新分配a(例如,如上所述使用reserve)。
  • 相比之下,std::list 在大多数情况下要慢得多,但指向元素的指针不会失效——所以这可能是一种替代方案......
  • 存储索引而不是指针。

标签: c++ arrays vector memory-address


【解决方案1】:

这个解决方案能解决您的问题吗?您可以通过b 访问a 地址索引。与b 交互时,请确保a 的完整性。

std::vector<int> a{ 1, 2, 3};
std::vector<int>& b{ a };

【讨论】:

    【解决方案2】:

    std::list 接近答案,但是,据我所知,删除元素会将指针移动到该元素之后。因此,存储索引而不是存储点并自己进行函数交换、擦除和添加会更快。 Array, which elements links to elements of another array这个问题是最接近的

    【讨论】:

      猜你喜欢
      • 2020-04-09
      • 2013-11-02
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多