我有一个关于在c ++ 11中定义向量的新快捷方式的问题.假设我有以下课程
struct Tester{
vector< vector<int> > data;
Tester(){
data = vector< vector<int> >();
}
void add(vector<int> datum){
data.push_back(datum);
}
};
Run Code Online (Sandbox Code Playgroud)
然后,以下按预期工作:
int main(){
Tester test = Tester();
vector<int> datum = vector<int>{1,2,3};
test.add(datum);
}
Run Code Online (Sandbox Code Playgroud)
但这不是:
int main(){
Tester test = Tester();
test.add(vector<int>{1,2,3});
}
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释一下这个区别吗?如何在第二个main()中执行我尝试的快捷方式?
Naw*_*waz 25
您的代码似乎没问题,但您使用的编译器不是(这似乎是旧的).
顺便说一句,你做得太多了.
这应该足够了:
vector<int> datum{1,2,3}; //initialization
test.add({1,2,3}); //create vector<int> on the fly and pass it to add()
Run Code Online (Sandbox Code Playgroud)
不要忘记更新编译器.
而且,这条线data = vector< vector<int> >();也太多了.这不是必需的.向量是自动构造的,这意味着您可以将类的构造函数留空,或者根本不使用它,因为它无论如何都不会执行任何操作.
| 归档时间: |
|
| 查看次数: |
10456 次 |
| 最近记录: |