c - *****double 的合适替代品

标签 c list dynamic allocation replace

我有一个大数据结构,它是一个 double 列表的列表的列表的列表。显然,处理起来效率极低。运行我的应用程序所花费的大约 70% 的时间用于在列表末尾的 double 中写入零。我需要一个更快的替换,它满足两个约束:

1)所有内存必须连续分配(即一大块内存)

2)我必须使用通常的 A[][][][][] 语法访问这个 block

就目前而言,我考虑使用 *double 来保存整个 block 并重用我的列表列表...来存储指向 block 中适当区域的指针。

还有更好的想法吗?

最佳答案

如何使用 2D 数组实现此目的的一个示例是,我懒得做 5D 情况

double **a;
a = malloc (n * sizeof(*double));
a[0] = malloc (n * m * sizeof(double));
for (int i = 1; i < n; ++i)
   a[i] = a[0][i*n];

这样你就可以决定是否要使用a[0][i*n]或a[i][j]对其进行索引。内存是连续的,您只需分配两次即可。当然,这也需要内存中有一个空闲的 n*m*sizeof(double) block ,但是由于您要求连续分配内存,所以我希望这一点能够得到满足。这也意味着您必须使用以下命令正确删除它:

free(a[0]);
free(a);

所以我会创建一个create5Darray (n,m,k,l,t) 和一个delete5Darray 函数来使这更容易。

关于c - *****double 的合适替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10102450/

相关文章:

javascript - 我无法从输入框中获取值

c++ - 指向结构体访问冲突写入位置的指针

c# - 动态生成时自定义 C# Enum ToString()

C - 索引问题

list - l_ply : how to pass the list's name attribute into the function?

python - python中的对象引用列表

python - 在 'in' 子句中使用 'if' 时的元组或列表?

html - CSS 动态左/右列静态宽度

c - 将指向字符串的指针数组传递给函数

c - 使用指针和指向指针的指针分配内存