Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将没有构造函数参数的对象放置到STL constainer?_C++_Stl_Containers_Emplace - Fatal编程技术网

C++ 如何将没有构造函数参数的对象放置到STL constainer?

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

假设我有一个类,它的构造函数不带参数,它的对象有一个STL容器:
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
是一个仅由构造函数参数参数化的可变模板。所以很明显,除非你有一个构造函数将
对象
作为它的唯一参数,否则这不应该起作用。无论如何,必须指定要构造的对象的类型是没有意义的。一旦您声明了列表,就会知道此类型。