通常、構造体オブジェクトの配列の並べ替えは簡単です。構造体の配列(AOS)を考えてみましょう
#define ITEMS 10
typedef struct MyStruct
{
char a;
int b;
}tMyStruct;
tMyStruct arr_mystruct[ITEMS];
まず、この構造体の配列に<a、b>ペアの値を入力します。
この構造体の配列を整数フィールドに従ってソートする場合は、2つの整数引数をとる比較関数を使用してlibcqsort関数を使用してソートできます。
ここで、上記のAOS形式の構造をSOA形式に置き換えることを検討してください。
#define ITEMS 10
typedef struct MyStruct
{
char a[ITEMS];
int b[ITEMS];
}tMyStruct;
tMyStruct mystruct;
これで、qsortを使用して整数の配列bフィールドを並べ替えることができますが、今回は、bの並べ替え順序でa(文字の配列)を追加で並べ替える必要があります。
だから私の質問は、通常のAOS形式の代わりにSOA形式でレイアウトされたデータの並べ替えを行うための可能な効率的な方法は何ですか?
誰かがこれで私を助けることができますか?ありがとう!