gpt4 book ai didi

c++ - vector 类 : Difference between 4 floats, 或 4 个 float 的数组

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

亲爱的 StackOverflowers,

我读了几本书,看到了 Vector 类的不同示例。现在我想知道:在性能或可移植性(或除访问之外的任何其他方面)方面是否存在差异:

class Vector
{
public:
....
private:
float mTuple[4];
};

class Vector
{
public:
....
public:
float x;
float y;
float z;
float w;
};

我认为 Vector.x 是比 Vector.X() 更优雅的解决方案;我知道重载运算符 [] 会稍微复杂一些,但我认为编译器应该能够轻松地将其优化到相同的速度,Vector 类的用户不会注意到它。

大家怎么看这件事?

基督徒

最佳答案

嗯,虽然两者都是可移植的和高性能的,但它们实际上没有相同的含义。

如果您知道您的数组中始终有 4 个元素并且它们具有不同的语义(例如,3D 空间中的坐标 x、y 和 z),您的第二个解决方案可能更好,尽管允许公共(public)访问字段是不是很好的做法(并且没有更高的性能,因为您的编译器可以内联打扰琐碎的 getter 和 setter)。

如果你的 vector 可以有任何(合理的)数量的项目,显然你别无选择,只能使用 float[]float*(编辑:或者,更像 C++,std::vectorstd::array)。

关于c++ - vector 类 : Difference between 4 floats, 或 4 个 float 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16418621/

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