有没有一种简单的方法可以按成员跨越结构的 STL 向量?换句话说,如果我有这样的结构:
struct foo {
double x, y, z;
};
在向量std::vector<foo> bar(20)
中,我可以跨过数组从每个结构中挑选出 x 吗?
我试过这个,但它似乎不起作用:
for (int i=0; i<20; ++i)
{
double xx = (&bar[0].x + i*sizeof(bar[0]))->x;
}
为什么那行不通?不sizeof(bar[0])
考虑结构之间的填充?
注意:我意识到这是在循环中访问 x 的一种非常愚蠢的方式,但这个循环只是一个实验,看看 stride 是否有效。
如果有帮助,我想这样做,这样我就可以将 bar 传递给一个库例程,该库例程接受一个指针和一个 stride 作为其自己的内部数据类型的构造函数参数。当然,我可以将我的代码从 AoS 转换为 SoA,但我不想这样做,除非我绝对必须这样做。