C++ 警告:扩展初始值设定项列表仅适用于-std=c++;0x或-std=gnu++;0x

C++ 警告:扩展初始值设定项列表仅适用于-std=c++;0x或-std=gnu++;0x,c++,matrix,C++,Matrix,我试图声明一个矩阵,当我编译时,我得到: extended initializer lists only available with -std=c++0x or -std=gnu++0x 当我尝试另一种解决方案时,我得到以下结论: ISO C++ forbids variable length array 'A' (line 16) 以下是我最后一次尝试的代码: #include<iostream> #include<cmath> #include<fstre

我试图声明一个矩阵,当我编译时,我得到:

extended initializer lists only available with -std=c++0x or -std=gnu++0x
当我尝试另一种解决方案时,我得到以下结论:

ISO C++ forbids variable length array 'A' (line 16)
以下是我最后一次尝试的代码:

#include<iostream>
#include<cmath>
#include<fstream>
#include<cstdlib>
using namespace std;

int main()
{

int m, l;

ifstream MatrixA ("A.txt");
MatrixA >> m;
MatrixA >> l;

int A [m][l];

for (int lineA = 0; lineA <= m; lineA++)
{
    for (int colA = 0; colA <= l; colA++)
    {
        A [lineA][colA];
    }
}

cout << "Matrix A: " << A[m][l] << endl;

return 0;

}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
int m,l;
ifstream矩阵(“A.txt”);
矩阵>>m;
MatrixA>>l;
int A[m][l];

for(int lineA=0;lineAC++不支持大小可变的内置数组。如果需要大小可变的数组维度,则需要使用动态执行必要内存分配的工具。相对简单的替代方法是使用
std::vector
std::vector

std::vector<std::vector<int> > A(m, std::vector<int>(l));
std::vector A(m,std::vector(l));
您能提供编译器标志吗?如果您想使用c++11功能,您需要在命令行上放置以下标志之一(取决于您的编译器版本)在C++中声明C++风格的数组是可变的,在C++中,C++是错误的。正如其他注释所指出的,您不能使用变量。一个新的C++ 11的特性是“代码> CONTXPRP</代码>,它在编译时进行评估,您所显示的代码的副本不可能是GI。请记住问题标题中的错误。请不要询问一段代码的错误,然后再显示另一段代码。要么同时显示,要么只询问一段。他还可以使用编译时计算的
constepr
。@KostasRim:鉴于矩阵维度是第一次读取的,我不确定
constepr
是如何计算的oing在这里提供帮助。而不是从文件中读取值。他可以将它们用作
constexpr
@KostasRim:当然。这解决了一个不同的问题。正如问题中的代码一样,问题似乎是:读取一个首先给出的具有灵活维度的矩阵。在使用时,使用
constexpr
无助于解决此问题当然,也有其他选择,但我没有看到任何使用
constepr
的选择。@Bruncky:原来的问题(为什么这个代码不编译?)似乎得到了回答(因为它试图使用C++中不存在的可变大小数组).与其把问题修改成另一个问题,不如问另一个问题