通常对结构对象数组进行排序很容易。考虑结构数组 (AOS)
#define ITEMS 10
typedef struct MyStruct
{
char a;
int b;
}tMyStruct;
tMyStruct arr_mystruct[ITEMS];
我首先用 < a , b> 对的值填充这个结构数组。
如果我现在想根据整数字段对这个结构数组进行排序,我可以使用 libc qsort 函数通过使用带有两个整数参数的比较函数来完成。
现在考虑我用 SOA 格式替换上面的 AOS 格式的结构
#define ITEMS 10
typedef struct MyStruct
{
char a[ITEMS];
int b[ITEMS];
}tMyStruct;
tMyStruct mystruct;
现在我仍然可以使用 qsort 对整数数组 b 字段进行排序,但是这次我需要另外对 a(字符数组)wrt b 的排序顺序进行排序。
所以我的问题是,对以 SOA 格式而不是通常的 AOS 格式布局的数据进行排序的一种可能有效的方法是什么?
谁能帮我这个 ?谢谢!