C++ 如何将没有构造函数参数的对象放置到STL constainer?
假设我有一个类,它的构造函数不带参数,它的对象有一个STL容器:C++ 如何将没有构造函数参数的对象放置到STL constainer?,c++,stl,containers,emplace,C++,Stl,Containers,Emplace,假设我有一个类,它的构造函数不带参数,它的对象有一个STL容器:list lst是否有办法将新对象插入到位 我知道类似于lst.push_back(Object())将以与使用move构造函数一样快的速度工作,但是,似乎有点奇怪,没有函数可以在列表末尾创建没有任何参数的新对象,而已经有了适合该位置的emplace 如果实际上不可能,请您提供一些解释好吗?您可以使用 lst.emplace_back()您可以使用 lst.emplace_back()嗯,就是这样 只需使用lst.emplace_b
list lst代码>是否有办法将新对象插入到位
我知道类似于lst.push_back(Object())
将以与使用move构造函数一样快的速度工作,但是,似乎有点奇怪,没有函数可以在列表末尾创建没有任何参数的新对象,而已经有了适合该位置的emplace
如果实际上不可能,请您提供一些解释好吗?您可以使用
lst.emplace_back()代码>您可以使用
lst.emplace_back()代码>嗯,就是这样
只需使用lst.emplace_back()代码>,该函数将在列表的末尾创建一个对象。嗯,就是这样做的
只需使用lst.emplace_back()代码>该函数将在列表末尾创建一个对象。您尝试了吗?尝试了吗?谢谢,它可以工作。这是我的第一个直觉,但KDevelop建议将其设置为lst.emplace_back()代码>由于某种原因无法正常工作。令人尴尬的是,在我尝试过的许多版本中,没有一个是最简单的。顺便说一句,知道显式类型版本为什么不起作用吗?@pkubik这是一个奇怪的建议,因为emplace\u back
是一个仅由构造函数参数参数化的可变模板。所以很明显,除非你有一个构造函数将对象
作为它的唯一参数,否则这不应该起作用。无论如何,必须指定要构造的对象的类型是没有意义的。一旦您声明了列表,就会知道此类型。谢谢,它可以工作。这是我的第一个直觉,但KDevelop建议将其设置为lst.emplace_back()代码>由于某种原因无法正常工作。令人尴尬的是,在我尝试过的许多版本中,没有一个是最简单的。顺便说一句,知道显式类型版本为什么不起作用吗?@pkubik这是一个奇怪的建议,因为emplace\u back
是一个仅由构造函数参数参数化的可变模板。所以很明显,除非你有一个构造函数将对象
作为它的唯一参数,否则这不应该起作用。无论如何,必须指定要构造的对象的类型是没有意义的。一旦您声明了列表,就会知道此类型。