gpt4 book ai didi

c++ - 非常量数组声明编译错误,C++

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:32 25 4
gpt4 key购买 nike

奇怪,非常奇怪的情况。考虑代码:

int n = 50;
auto p1 = new double[n][5]; //OK
auto p2 = new double[5][n]; //Error

main.cpp: In function ‘int main()’:
main.cpp:17:26: error: array size in new-expression must be constant
auto p2 = new double[5][n]; //Error

main.cpp:17:26: error: the value of ‘n’ is not usable in a constant expression
main.cpp:15:8: note: ‘int n’ is not const

谁能解释为什么我在第二个上遇到编译错误,但第一个却运行良好?

最佳答案

使用 new double[n][5],您将分配 n 个类型为 double[5] 的值。

使用new double[5][n],您正在分配5 variable-length arrays .而且 C++ 没有 VLA,所以这是无效的。

一如既往,解决方案是使用 std::vector :

std::vector<std::vector<double>> p2(5, std::vector<double>(n));

以上定义p2double vector 的 vector 。它将 p2 构造为具有 5 个元素的大小,其中每个元素都被初始化为一个包含 n 个值的 vector 。

关于c++ - 非常量数组声明编译错误,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457270/

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