Vector
March 16, 2023Less than 1 minute
Vector
emplace_back
使用 emplace_back
添加数列中的元数可以减少复制构造函数的调用。但是前提是传入的是该数组类型构造函数的参数。例如:
class Vertex
{
private:
int x, y, z;
public:
Vertex(int a, int b, int c) : x(a), y(b), z(c) {}
Vertex(const Vertex &other)
{
std::cout << "Copy!!!" << std::endl;
}
};
void Run()
{
std::vector<Vertex> vertices;
// 该方式复制6次
// vertices.push_back(Vertex(1, 2, 3));
// vertices.push_back(Vertex(4, 5, 6));
// vertices.push_back(Vertex(7, 8, 9));
// 以下方式无复制
vertices.reserve(3);
vertices.emplace_back(1, 2, 3);
vertices.emplace_back(4, 2, 3);
vertices.emplace_back(5, 2, 3);
}