我有一个连续的内存块,其中前 N 个字节都包含 A 类型的对象,其余字节包含 B 类型的元素。例如,我可能有 120 个 A 类型的对象,然后是 40 个 B 类型的对象。
A 型和 B 型都是大小不同的结构,但都有一个整数成员“索引”,这是我想要排序的。基本上我想得到一个按索引排序的数组,我目前有一个按数据类型排序的数组。理想情况下,我希望最终按索引排序,然后按类型排序,所以类似于
Index==1 elements | Index==2 elements | ... | Index==L elements
Type A | Type B | Type A | Type B | ... | Type A| Type B
到目前为止,我想出的唯一方法是按索引分别对 A 型和 B 型块进行排序,然后使用 memcopy 将它们打乱,使它们看起来像上面那样。有更好的解决方案吗?