gpt4 book ai didi

c++ - 增长数组 C++ 的最有效方法

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:22 24 4
gpt4 key购买 nike

很抱歉,如果之前有人问过这个问题,我找不到能完全回答我想知道的问题。他们提到了执行此操作的方法,但不比较方法。

我正在用 C++ 编写一个程序来将 PDE 求解到稳态。我不知道这需要多少时间步骤。因此我不知道我的时间数组会有多长。这将有 100,000 秒的最长时间,但时间步长可能小至 .001,因此在最坏的情况下它的长度可能多达 1e8 doubles(不一定是罕见的两种情况)。

就内存分配和运行时间而言,最有效的实现方法是什么?

我看过的选项:

  • 动态分配一个包含 1e8 个元素的数组,其中大部分元素永远不会被使用。
  • 最初分配一个较小的数组,在需要时创建一个较大的数组并复制元素
  • 使用 std::vector 及其大小增加功能

还有其他选择吗?

我主要关心速度,但我也想知道内存方面的考虑因素有哪些

最佳答案

如果您担心速度,只需分配 1e8 double 即可。

在大多数情况下,vector 应该可以正常工作。请记住,摊销它的追加是 O(1)。

除非您在非常奇怪的东西上运行,否则操作系统内存分配应该解决大多数碎片问题以及很难找到 800MB 空闲内存块的事实。

关于c++ - 增长数组 C++ 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221223/

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