gpt4 book ai didi

c++ - 如何从 int* 类型的堆分配数组中检索 int[num_elem] 类型的变量?

转载 作者:行者123 更新时间:2023-11-27 23:52:17 26 4
gpt4 key购买 nike

我需要访问我在堆上分配的数组上的 end() 和 begin() 之类的迭代器,如下所示:

int* init_env_heap = new int[NUM_ELEM];

它的类型为 int* 并且迭代器不会立即为它工作。

但是,当我在堆栈上分配它时,类型是 int[NUM_ELEM] 并且迭代器工作:

int init_env_stack[NUM_ELEM] = { };

如何在 init_env_heap 上使用迭代器?

最佳答案

关于迭代器的事情是它们模仿指针。堆分配区域的开始是指向第一个元素的指针。结尾是开头加上大小。

只要想到几件事就很容易记住:

  • “起始迭代器”始终是指向第一个元素的指针
  • “结束迭代器”总是指向最后一个元素之后的元素
  • 对于任何有效指针 p 和索引 i 表达式 p + i 等于 &p[i].

在您的情况下,第一个元素由 init_env_heap 指向,指向最后一个元素之后的指针是 &init_env_heap[NUM_ELEM] 等于 init_env_heap + NUM_ELEM

关于c++ - 如何从 int* 类型的堆分配数组中检索 int[num_elem] 类型的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45400023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com