int の配列があり、この配列を値 -1 で初期化する必要があります。今のところ、私はこのループを使用します:
int i;
int myArray[10];
for(i = 0; i < 10; i++)
myArray[i] = -1;
より速い方法はありますか?
int の配列があり、この配列を値 -1 で初期化する必要があります。今のところ、私はこのループを使用します:
int i;
int myArray[10];
for(i = 0; i < 10; i++)
myArray[i] = -1;
より速い方法はありますか?
-1
値(または0
)について私が知っている最も簡単な方法はmemsetです。
int v[10];
memset(v, -1, 10 * sizeof(int));
とにかく、次の方法でループを最適化できます。
int i;
for(i = 10; i--;)
v[i] = -1;
memset
は非常に高速です。
int arr[10];
memset(arr, -1, sizeof(arr));
ただし、そこにあるものは、とにかく最適化コンパイラによって memset への呼び出しに変換される可能性があります。アセンブリの出力を確認してください。ただし、コンパイル時にループがループのままになる可能性はほとんどありません。
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};