更改数组大小 C

新手上路,请多包涵

我创建了一个数组指针作为全局变量,如下所示:

 T *bag;
        bag = new T[size];

我有一种方法可以将东西插入数组;但是,如果它检测到它将溢出数组,我需要调整数组的大小(没有向量)。我一直在阅读有关堆栈溢出的所有问题,但答案似乎不适用于我,因为我需要将旧数组中的数据复制到新数组中。此外,如果我在方法内创建一个更大的新数组,然后将数据复制到新数组,一旦方法结束,数组将消失,但我需要它再次成为全局变量,所以我的所有方法可以看到它…我应该如何进行?谢谢

原文由 Chris 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 776
1 个回答

thing 你需要可以做以下事情

  • 当请求的大小大于当前数组大小时自动处理大小调整。

  • 调整大小时,他们可以将原始内容复制到新空间,然后立即删除旧分配。

  • 有一种非全局变量方式机制,它们可以跟踪数组指针和当前大小。

thingstd::vector 非常相似。如果不允许使用,您可能需要自行 管理一个动态分配的资源,例如 std::vector 。您可以在该答案链接中引用实现。

如果最终需要将其包装在一个类中,请确保遵循三大规则(C++11 中的 5 条规则)

原文由 Chen OT 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题