#include <iostream>
#include <string>
#include <vector>
struct Vertex
{
float x, y, z;
Vertex(float x,float y,float z)
:x(x),y(y),z(z)
{
}
Vertex(const Vertex& vertex)
:x(vertex.x),y(vertex.y),z(vertex.z)
{
std::cout << "copied!" << std::endl;
}
};
std::ostream& operator<<(std::ostream& stream,const Vertex& vertex)
{
stream << vertex.x << ", " << vertex.y << ", " << vertex.z;
return stream;
}
int main()
{
std::vector<Vertex> vertices;
vertices.reserve(3);//确保有足够的内存来容纳vector
/*
vertices.push_back(Vertex(1, 2, 3));
vertices.push_back(Vertex(4, 5, 6));
vertices.push_back(Vertex(7, 8, 9));
*/
vertices.emplace_back(1, 2, 3);
vertices.emplace_back(4, 5, 6);
vertices.emplace_back(7, 8, 9);
for (Vertex& v : vertices)
std::cout << v << std::endl;
std::cin.get();
}
用reserve确保vector有足够内存容纳数据
用emplace_back推入vector数据,仅传入构造函数的参数列表