gpt4 book ai didi

c++ - 设计一个 Vector3D 类

转载 作者:太空狗 更新时间:2023-10-29 23:21:24 25 4
gpt4 key购买 nike

当我们想要创建一个新的 vector 3D 类时,我不知道哪个是最佳实践,我的意思是,这两个示例中哪个是最好的方法?

class Vec3D
{
private:

float m_fX;
float m_fY;
float m_fZ;

...
};

class Vec3D
{
private:

float m_vVec[3];
...
};

对于第一种方法,我们有单独的变量,我们不能确保在内存中是连续的,因此缓存可能会失败,但访问这些变量是一条指令。

使用第二种方法,我们在内存中有一个由 3 个连续 float 组成的 vector ,缓存在这里很好,但每次访问都会产生额外的变量偏移量。但我认为这种 vector 方法可以更好地适应 SSE2/3 之类的优化。

哪种方法更好,我迷路了,我需要建议:)

感谢您的宝贵时间:)

洛伦斯

最佳答案

使用

class Vec3D
{
private:
union
{
float m_vVec[3];
struct
{
float m_fX;
float m_fY;
float m_fZ;
};
};
...
}

这会让你们两个都不需要额外的费用

关于c++ - 设计一个 Vector3D 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1467449/

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