我有一个关于在 c++11 中定义 vector 的新快捷方式的问题。假设我有以下类(class)
struct Tester{
vector< vector<int> > data;
Tester(){
data = vector< vector<int> >();
}
void add(vector<int> datum){
data.push_back(datum);
}
};
然后,以下工作按预期工作:
int main(){
Tester test = Tester();
vector<int> datum = vector<int>{1,2,3};
test.add(datum);
}
但这不是:
int main(){
Tester test = Tester();
test.add(vector<int>{1,2,3});
}
有人可以向我解释一下区别吗?如何执行我在第二个 main() 中尝试的快捷方式?
最佳答案
您的代码似乎没问题,但您使用的编译器却不是(这似乎是旧的)。
顺便说一句,你做的太多了。
这就够了:
vector<int> datum{1,2,3}; //initialization
test.add({1,2,3}); //create vector<int> on the fly and pass it to add()
别忘了更新你的编译器。
另外,data = vector< vector<int> >();
行也太多了。它不是必需的。 vector 是自动构造的,这意味着您可以将类的构造函数留空,或者根本不拥有它,因为它不会做任何事情。
关于c++11 函数调用中的 vector 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975804/