我已经声明了像这样的二维数组。但得到一个错误,由于该在声明过程中将值初始化为二维向量
vector <vector <int> > plain(vector <int>(4,0)) = {{23,43,45,56},
{67,85,13,59},
{48,23,9,57},
{24,52,90,12}};
rijndael.cpp:12:51: error: expected ‘,’ or ‘;’ before ‘=’ token
rijndael.cpp:57:1: error: expected ‘}’ at end of input
所有以前的分号已正确分配。 你能告诉我在这个声明中哪里出错了吗?
我删除了构造函数调用和我的声明现在是
vector <vector <int> > plain/*(vector <int>(4,0))*/ = {{23,43,45,56},
{67,85,13,59},
{48,23,9,57},
{24,52,90,12}};
但现在的错误是
rijndael.cpp:15:19: error: in C++98 ‘plain’ must be initialized by constructor, not by ‘{...}’
rijndael.cpp:15:19: error: deducing from brace-enclosed initializer list requires #include <initializer_list>
rijndael.cpp:15:19: error: deducing from brace-enclosed initializer list requires #include <initializer_list>
rijndael.cpp:15:19: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
rijndael.cpp:15:19: error: could not convert ‘{{23, 43, 45, 56}, {67, 85, 13, 59}, {48, 23, 9, 57}, {24, 52, 90, 12}}’ to ‘std::vector<std::vector<int> >’
如何纠正呢? 任何帮助非常感谢。
它没有工作。我在我的问题的编辑部分中得到了上述错误 – 2012-02-17 04:53:37
从错误消息看来,您似乎正在使用'C++ 98'。如果你使用GCC,那么使用'--std = C++ 0x'选项来启用C++ 11。 – Nawaz 2012-02-17 04:56:58
谢谢--std = C++ 0x工作! – 2012-02-17 05:57:49