0

私はC++で並列qsortを実行しようとしています。うまくソートされている数値配列があり、並列の2次元文字配列をその数値とともに上下に移動させたいです。これは私がこれまでに持っているものです。

    int compare (const void * a, const void * b)
    {
        //this is for qsort
        return ( *(int*)b - *(int*)a );
    }

    void sort_scores(char** myArray, int *votes)
    {
        qsort ((myArray, votes ), 5, sizeof(int), compare);
    }

数字を並べ替えることはできますが、一度に1つずつキャラクターを動かすことができないため、これを機能させることができないようです。どんな助けでも大歓迎です。

4

1 に答える 1

0

投票自体を並べ替える代わりに、投票へのポインターの配列 (つまり、配列の各要素へのポインターのvotes配列) を作成し、ポインターを並べ替えることができます。(それに応じて比較関数を更新することを忘れないでください! にキャストする必要がある引数を受け取るようになりましたint **)。その新しい配列を並べ替えた後、それをウォークスルーし、ポインターの違いを使用して元の配列の要素のインデックスを取得します。

于 2013-02-10T11:07:36.553 に答える