我有点困惑有关之间的差异push_back和emplace_back.
void emplace_back(Type&& _Val);
void push_back(const Type& _Val);
void push_back(Type&& _Val);
Run Code Online (Sandbox Code Playgroud)
因为有一个push_back超载采用右值参考我不太明白目的是emplace_back什么?
我想知道为什么我推回到向量中的元素会在这种情况下调用它的析构函数:
#include <iostream>
#include <vector>
class Foo
{
public:
Foo(int a)
: m_a(a)
{
std::cout << "Foo ctor() " << m_a << std::endl;
}
~Foo()
{
std::cout << "Foo dtor() " << m_a << std::endl;
}
private:
int m_a;
};
class FooStorage
{
public:
static void createFoo(int a)
{
m_foos.push_back(Foo(a));
}
static std::vector<Foo> m_foos;
};
std::vector<Foo> FooStorage::m_foos;
int main()
{
std::cout << "Before: " << FooStorage::m_foos.size() << std::endl;
FooStorage::createFoo(53);
std::cout << "After: " << FooStorage::m_foos.size() << std::endl;
return 0;
} …Run Code Online (Sandbox Code Playgroud)