请考虑以下代码:
class A
{
};
int main()
{
std::vector<A> test;
test.push_back(A());
}
构造函数和析构函数将被调用两次,还会分配两次内存并复制对象,这不仅可能对性能有潜在的负面影响,而且还可能导致运行时错误,特别是如果析构函数中存在一些清理操作。我通常的解决方法是只创建指针的向量:
std::vector<A*> test;
test.push_back(new A());
我的问题有两个方面,这是常见做法吗?是否是优秀的做法?还是有更好的方法?如果这已经是重复问题,请告诉我,我会关闭这个问题,但我在搜索中找不到任何相关结果。
emplace_back
使得优化变得非常简单。 - asu