这是一个愚蠢的问题,但我有一个形而上学的疑问,这就是我需要问的原因。
当将对象推回向量时,假设我不需要事先更新对象,我可以避免使用局部变量吗?
void addToVector(std::vector<Foo>& fooVector)
{
// Solution #1
Foo foo;
fooVector.push_back(foo);
// Solution #2
fooVector.push_back(Foo());
}
解决方案#2 是否会泄漏内存,知道没有局部变量超出范围封装Foo?
假设解决方案#2 有效,它是否比解决方案#1 更有效? (emplace_back
可能是,但我仍然坚持使用c ++ 03)
答案 0 :(得分:2)
push_back
将项目复制到向量中,因此您可以说emplace_back
效率最高。
您对临时Foo()
的使用不会泄漏。