我有一个看起来像这样的结构:
struct SoA
{
int arr1[COUNT];
int arr2[COUNT];
};
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
struct AoS
{
int arr1_data;
int arr2_data;
};
std::vector<AoS> points;
Run Code Online (Sandbox Code Playgroud)
尽快.必须保留订单.
是AoS单独构建每个对象并以最快的方式将其推回去,还是有更快的选择?
SoA before;
std::vector<AoS> after;
for (int i = 0; i < COUNT; i++)
points.push_back(AoS(after.arr1[i], after.arr2[i]));
Run Code Online (Sandbox Code Playgroud)
StackOverflow上有与SoA/AoS相关的问题,但我没有找到与最快转换相关的问题.由于结构填充的差异,我无法看到任何方法来避免将数据从一种格式复制到下一种格式,但我希望有人可以告诉我,有一种方法可以简单地引用数据并避免复制.
特别鼓励离墙解决方案.