向量向量的语法错误
syntax failure with vector of vectors
看了文章Initializing a vector of vectors having a fixed size with boost assign应该正好满足我的要求:初始化一个可以在两个方向上任意扩展的向量的类矩阵向量(我想用它来提取和分组一个选择更大列表中的值)。
但是,前2个答案给出的解决方案
vector<vector<int>> v(10, vector<int>(10,1));
在我的 CDT_eclipse 中提示语法错误,我的编译器提示以下错误:
error: expected identifier before numeric constant
vector <vector <int> > v(10, vector <int>(10,1));
--
在 vector of vector - specific syntax 中找到的版本适用于我的 eclipse:
vector<vector<int>> v = vector<vector<int>>(n, vector<int>(n, 0));
但是它会提示我的编译器发出警告:
vector warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [...]
更改编译器版本(gcc 5.4.0 20160609 for Ubuntu 5.4.0-6ubuntu1~16.04.10)在应该使用我的代码的宏伟计划中是不可能的。所以我需要上面提到的命令的兼容公式。非常感谢!
编辑:我的两次主要尝试如下所示:
vector <vector <int> > v(10, vector <int>(10,1)); --> syntax error
vector <vector<int> > v = vector <vector<int> >(1, vector<int>(1, 0)); --> compiler error
我猜这里您忘记告诉我们您正在尝试为 class 声明一个数据成员。所以你真的在尝试编译这样的东西:
struct A {
vector <vector <int> > v(10, vector <int>(10,1));
};
和
struct A {
vector <vector<int> > v = vector <vector<int> >(1, vector<int>(1, 0));
};
数据成员只能在 class 定义中用等号或大括号初始化。不允许带括号的初始化。
尝试:
struct A {
vector<vector<int>> v{10, vector<int>(10,1)};
};
在任何情况下,你至少需要 C++11 来进行大括号初始化,以及声明中的非静态成员初始化(你使用等号而不是括号的第二个错误,但使用旧的 C++ 标准).
看了文章Initializing a vector of vectors having a fixed size with boost assign应该正好满足我的要求:初始化一个可以在两个方向上任意扩展的向量的类矩阵向量(我想用它来提取和分组一个选择更大列表中的值)。
但是,前2个答案给出的解决方案
vector<vector<int>> v(10, vector<int>(10,1));
在我的 CDT_eclipse 中提示语法错误,我的编译器提示以下错误:
error: expected identifier before numeric constant
vector <vector <int> > v(10, vector <int>(10,1));
--
在 vector of vector - specific syntax 中找到的版本适用于我的 eclipse:
vector<vector<int>> v = vector<vector<int>>(n, vector<int>(n, 0));
但是它会提示我的编译器发出警告:
vector warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [...]
更改编译器版本(gcc 5.4.0 20160609 for Ubuntu 5.4.0-6ubuntu1~16.04.10)在应该使用我的代码的宏伟计划中是不可能的。所以我需要上面提到的命令的兼容公式。非常感谢!
编辑:我的两次主要尝试如下所示:
vector <vector <int> > v(10, vector <int>(10,1)); --> syntax error
vector <vector<int> > v = vector <vector<int> >(1, vector<int>(1, 0)); --> compiler error
我猜这里您忘记告诉我们您正在尝试为 class 声明一个数据成员。所以你真的在尝试编译这样的东西:
struct A {
vector <vector <int> > v(10, vector <int>(10,1));
};
和
struct A {
vector <vector<int> > v = vector <vector<int> >(1, vector<int>(1, 0));
};
数据成员只能在 class 定义中用等号或大括号初始化。不允许带括号的初始化。
尝试:
struct A {
vector<vector<int>> v{10, vector<int>(10,1)};
};
在任何情况下,你至少需要 C++11 来进行大括号初始化,以及声明中的非静态成员初始化(你使用等号而不是括号的第二个错误,但使用旧的 C++ 标准).