有人可以解释这个C++符号吗?

Ada*_*lor 3 c++ arrays notation

if (vector1.x > ((float*)&vector1)[j])
Run Code Online (Sandbox Code Playgroud)

Ĵ单纯只是一个索引向量?
例如,即使vector不是数组,C++也可以使用数组表示法检索这些值吗?
如果是的话我猜它通过引用达到这个载体通过其地址?

Joh*_*itb 11

C++标准说,将(pods)结构体的指针转换为其第一个元素类型的指针将产生指向其第一个元素的指针:

struct a {
    float a1;
    float a2;
    float a3;
};

a o1; ((float*)&o1); // points to o1.a1
Run Code Online (Sandbox Code Playgroud)

我怀疑代码告诉编译器不要在a1,a2和a3之间添加任何填充,这样如果它对指针进行索引,它将精确指向它想要的浮点数.所以上面

((float*)&o1)[1] // *would* return o1.a2
Run Code Online (Sandbox Code Playgroud)

这与平台有关,因为在标准C++中无法更改填充.查看代码如何排列它,以及我是否正确:)