我对 c++11 中定义向量的新快捷方式有疑问。假设我有以下课程
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> >();
也太多了。不需要。该向量是自动构造的,这意味着您可以将类的构造函数保留为空,或者根本不包含它,因为它无论如何也不执行任何操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)