gpt4 book ai didi

c++ - 最简单的二维数组,使用 g++,具有一个可变维度?

转载 作者:行者123 更新时间:2023-11-28 06:45:22 26 4
gpt4 key购买 nike

我想做一个这样的数组:

double array[variable][constant];

只有第一个维度是可变的。用变量声明它作为第一维会产生初始化错误。有没有一种简单的方法可以用指针或其他基本类型来做到这一点?

最佳答案

可变长度数组没有出现在最新的 C++ 标准中。您可以改用 std::vector

std::vector<std::vector<double> > arr;

或者,例如,要修复第二个维度(在此示例中为 10),您可以这样做

std::vector<std::array<double, 10> > arr1; // to declare a fixed second dimension

否则你需要使用旧指针,

double (*arr)[10]; // pointer to array-of-10-doubles

根据@Chiel 的评论,您可以提高性能

typedef double (POD_arr)[10];
std::vector<POD_arr> arr;

通过这种方式,您可以将所有数据连续存储在内存中,因此访问速度应该与使用普通的旧 C 数组一样快。

PS:最后的声明似乎是违反标准的,因为正如@juanchopanza 提到的,POD 数组不满足数据存储在 STL 数组中的要求(它们不可分配)。但是,g++编译以上2个声明没有任何问题,并且可以在程序中使用它们。但是 clang++ 失败了。

关于c++ - 最简单的二维数组,使用 g++,具有一个可变维度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25108662/

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