push_back非指针元素到一行矢量

Chr*_*ord 0 c++ vector

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

vector<SomeClass*> v;
v.push_back(new SomeClass(initVar1));
v.push_back(new SomeClass(initVar2));
v.push_back(new SomeClass(initVar3));
Run Code Online (Sandbox Code Playgroud)

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

Ed *_* S. 6

如果他们有公共副本构造函数,当然:

v.push_back(SomeClass(initVar));
Run Code Online (Sandbox Code Playgroud)

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

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