亲爱的 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::vector
或 std::array
)。
关于c++ - vector 类 : Difference between 4 floats, 或 4 个 float 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16418621/