-4

私は出くわしましstd:sortたが、私の場合はうまくいきません。1 つの列だけを並べ替える必要がある 2D float 配列があります。FLOATS の並べ替えアルゴリズムはどれでもかまいません。でも、マージソートを考えていました。誰か?

void selectionSort(float x[], int n) {
float curr = 0, min = 0, i = 0, temp;

for (curr = 0; curr < n-1; curr++) {
    min = curr;  // assume this is smallest

    //--- Look over remaining elements to find smallest.
    for (i = curr+1; i < n; i++) {
        if (x[i] < x[min]) {
            //--- Remember index for latter swap.
            min = i;
        }
    }

    //--- Swap smallest remaining element
    temp = x[curr];
    x[curr] = x[min];
    x[min] = temp;
}}

VS 2010 はエラーを出力します:添え字が整数型ではありません

4

1 に答える 1

2

floatC/C++ では、実際のデータ型 (doubleなど) を添字演算子として使用して、配列のサイズを宣言したり、アクセスしたりすることはできません。以下はエラーです。

int ArraySize[10.0];

したがって、次のようになります。

ArraySize[4.0];

サイズを指定し、要素にアクセスするには、整数型 ( intlongchar、など) を渡す必要があります。変数が実数型の場合、それを int に型キャストできます (または、より好ましくは)boolunsignedsize_t

float nIndex = 5.0; 
ArraySize[(size_t)nIndex];

クラスがある場合は、添字演算子を任意の型でオーバーロードできます!

于 2013-02-09T12:14:30.987 に答える