有人可以解释一下这个 C++ 符号?
if (vector1.x > ((float*)&vector1)[j])
j 只是向量的索引吗?
例如,即使向量不是数组,C++ 是否能够使用数组表示法检索这些值?
如果是这样,我猜它是通过引用向量的地址来实现这一点的?
if (vector1.x > ((float*)&vector1)[j])
Is j simply just an index into the vector?
e.g. is C++ able to retrieve these values using array notation even though vector isn't an array?
If so I'm guessing it achieves this by referencing vector by its address?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
C++ 标准规定,将 (pods) 结构体的指针转换为其第一个元素类型的指针将产生指向其第一个元素的指针:
我怀疑代码告诉编译器不要在 a1、a2 和 a3 之间添加任何填充,这样,如果它索引指针,它将准确地指向它想要的浮点数。 以上
是平台相关的,因为在标准 C++ 中填充不能更改。 查找该代码如何安排它,以及我是否完全正确:)
The C++ Standard says that casting a (pods) struct's pointer to a pointer of the type of its first element will yield a pointer to its first element:
I suspect that code told the compiler not to add any padding between a1, a2 and a3, so that if it indexes the pointer, it will pointer exactly to the float it wants. So above
That's platform dependent, as padding can't be changed in Standard C++. Lookup how that code arranges it, and whether i'm right at all :)