Edu*_*yan 0 c++ compiler-errors multidimensional-array c++11
奇怪,非常奇怪的情况.考虑一下代码:
int n = 50;
auto p1 = new double[n][5]; //OK
auto p2 = new double[5][n]; //Error
Run Code Online (Sandbox Code Playgroud)
main.cpp:在函数'int main()'中:
main.cpp:17:26:错误:new-expression中的数组大小必须是常量
auto p2 = new double [5] [n]; //错误main.cpp:17:26:错误:'n'的值在常量表达式
main.cpp中不可用:15:8:注意:'int n'不是const
任何人都可以解释为什么我在第二个上得到编译错误但第一个工作完美?
随new double[n][5]你分配n类型的值double[5].
随new double[5][n]你分配5 可变长度数组.并且C++没有VLA,因此无效.
与以往一样,解决方案是使用std::vector:
std::vector<std::vector<double>> p2(5, std::vector<double>(n));
Run Code Online (Sandbox Code Playgroud)
以上定义p2为矢量的向量double.它构造p2为具有5元素的大小,其中每个元素被初始化为n值的向量.
| 归档时间: |
|
| 查看次数: |
515 次 |
| 最近记录: |