0

当包含指针时,可以将push_back vector元素放在一行中:

vector<SomeClass*> v;
v.push_back(new SomeClass(initVar1));
v.push_back(new SomeClass(initVar2));
v.push_back(new SomeClass(initVar3));

push_back有没有办法用非指针变量(必须是其他变量的副本)来做这样的单行?

4

1 回答 1

6

如果他们有公共复制构造函数,当然:

v.push_back(SomeClass(initVar));

请注意,push_back无论如何都会创建一个副本,所以对我来说似乎毫无意义。在 C++11 中,如果可能,对象将被移动构造。

此外,不要让自己头疼,并std::unique_ptr<T>为矢量元素使用原始指针而不是原始指针。以这种方式使用原始指针会完全禁用向量为您管理内存的能力,从而破坏了使用它的一半目的。

于 2013-02-28T00:31:23.973 回答