看看这段代码:
struct Dummy
{
int bla;
int blabla;
char character;
Dummy (int b, int bb, char c)
: bla(b), blabla(bb), character(c)
{}
};
std::stack<Dummy> s;
Dummy dummy;
s.push(dummy); // (1)
s.emplace(dummy); // (2)
(1)
我看不出和之间的区别(2)
。我知道emplace()
当您为要添加的对象的构造函数提供参数时很有用,例如:
s.emplace(1, 2, 'c');
但我不知道我描述的情况有什么区别,因为两者都push()
应该emplace()
引用本地dummy
对象并使用复制ctor或类似的东西创建一个新对象。是否push()
在此过程中创建任何临时对象?