7

int の配列があり、この配列を値 -1 で初期化する必要があります。今のところ、私はこのループを使用します:

int i;
int myArray[10];

for(i = 0; i < 10; i++)
    myArray[i] = -1;

より速い方法はありますか?

4

4 に答える 4

9

-1値(または0)について私が知っている最も簡単な方法はmemsetです。

int v[10];
memset(v, -1, 10 * sizeof(int));

とにかく、次の方法でループを最適化できます。

int i;
for(i = 10; i--;)
    v[i] = -1;
于 2012-06-04T17:48:52.163 に答える
2

memsetは非常に高速です。

int arr[10];
memset(arr, -1, sizeof(arr));

ただし、そこにあるものは、とにかく最適化コンパイラによって memset への呼び出しに変換される可能性があります。アセンブリの出力を確認してください。ただし、コンパイル時にループがループのままになる可能性はほとんどありません。

于 2012-06-04T17:52:27.390 に答える
2

GNU C でできることは次のとおりです。

int myArray[10] = {[0 ... 9] = -1};

要素の範囲の初期化: http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

そして、誰も言及しなかったように、ポータブル C では:

int myArray[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
于 2012-06-04T17:55:28.607 に答える