我有一个Polygon类.目前,多边形的坐标存储在一个双数组中,其中行数由"n"指定,列数仅为3(x,y,z).
我想用stl向量重写它(即向量中的每个元素都是一个指向大小为3的float数组的指针).怎么做?这是一个有效的声明吗?
vector<float*> vertices;
Run Code Online (Sandbox Code Playgroud)
提前致谢!
struct Vector3 {
Vector3( float x, float y, float z):_x(x),_y(y),_z(z) )
{
}
float _x , _y , _z;
};
std::vector<Vector3> vertices;
Run Code Online (Sandbox Code Playgroud)
不需要指针,因为它会增加管理内存的复杂性(如果它是由new分配的),因为std :: vector不会拥有指针,你将不得不删除它.
此外,std :: vector保证在内存中是连续的,因此可以安全地获取第一个元素的地址,
&vertices[0]
Run Code Online (Sandbox Code Playgroud)
你可以将它传递给像openGL这样的API.
添加新元素也很容易,您可以创建构造函数或逐个设置元素.
构造函数的示例:
vertices.push_back(Vector3( x, y, z ));
Run Code Online (Sandbox Code Playgroud)
在开始时分配一次内存也是一种更好的做法.
vertices.reserve( verticeCount);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |