gpt4 book ai didi

C++ vector 类存储指向对象的指针

转载 作者:行者123 更新时间:2023-11-30 01:18:59 26 4
gpt4 key购买 nike

我有一个多边形类。目前,多边形的坐标存储在一个double数组中,其中行数由“n”指定,列数仅为3(x,y,z)。

我想改用 STL vector 重写它(即 vector 中的每个元素都是一个指向大小为 3 的 float 组的指针)。这将如何完成?这是一个有效的声明吗?

vector<float*> vertices;

提前致谢!

最佳答案

struct Vector3 {

Vector3( float x, float y, float z):_x(x),_y(y),_z(z) )
{
}

float _x , _y , _z;
};

std::vector<Vector3> vertices;

不需要指针,因为它会增加管理内存的复杂性(如果它是由 new 分配的),因为 std::vector 不会拥有指针,您将不得不删除它。

此外,std::vector 保证在内存中是连续的,因此获取第一个元素的地址是安全的,

&vertices[0]

您可以将它传递给 API,例如 openGL。

添加新元素也很容易,您可以创建一个构造函数或一个一个地设置元素。

构造函数示例:

vertices.push_back(Vector3( x, y, z ));

在开始时分配一次内存也是一个更好的做法。

vertices.reserve( verticeCount);

关于C++ vector 类存储指向对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com