小编Con*_*son的帖子

最快可能的阵列结构到阵列转换

我有一个看起来像这样的结构:

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相关的问题,但我没有找到与最快转换相关的问题.由于结构填充的差异,我无法看到任何方法来避免将数据从一种格式复制到下一种格式,但我希望有人可以告诉我,有一种方法可以简单地引用数据并避免复制.

特别鼓励离墙解决方案.

c++ arrays struct type-conversion

5
推荐指数
1
解决办法
647
查看次数

标签 统计

arrays ×1

c++ ×1

struct ×1

type-conversion ×1