std::fill_n
実際、C では使用できない C++ のアルゴリズムです。
は配列を初期化しないことfill_n
に注意してください。指定された値を配列のすべての要素に割り当てます。
C で同様のことを行うには、配列の要素を繰り返し処理し、すべての要素に値を割り当てる必要があります。例えば:
// Compile: gcc -std=c99 -Wall -pedantic -o test ./test.c
int main()
{
double array[100];
unsigned int i;
for (i = 0; i < sizeof(array)/sizeof(array[0]); ++i)
array[i] = 9.99;
}
配列がバイト文字列の場合は、 を使用memset
する方が適切な選択になる可能性があります。開発者は配列に慣れているため、コードがよりコンパクトになり、高速になる可能性もあります。例えば:
// Compile: gcc -std=c99 -Wall -pedantic -o test ./test.c
#include <string.h>
int main()
{
char array[100];
memset(array, 1, sizeof(array)); // Set every element to 1.
}
割り当てを行う代わりに初期化する場合は、次のいずれかを行う必要があります。
- zero-initializer を使用して、各要素を 0 に設定します。
int array[100] = { 0 };
- 各要素の値を指定します。
int array[] = { 1, 2, 3 };
それが役に立てば幸い。幸運を!