我需要动态创建一个整数数组。我发现在使用静态数组时,语法
int a [5]={0};
将所有元素的值正确初始化为 0。
创建动态数组时有没有办法做类似的事情
int* a = new int[size];
无需遍历数组的所有元素?或者也许用 for 循环分配值仍然是最佳方法?谢谢
我需要动态创建一个整数数组。我发现在使用静态数组时,语法
int a [5]={0};
将所有元素的值正确初始化为 0。
创建动态数组时有没有办法做类似的事情
int* a = new int[size];
无需遍历数组的所有元素?或者也许用 for 循环分配值仍然是最佳方法?谢谢
我会做:
int* a = new int[size];
memset(a, 0, size*sizeof(int));
我建议你使用std::vector<int>
或std::array<int,5>
值初始化元素()
例子:
int *p = new int[10]; // block of ten uninitialized ints
int *p2 = new int[10](); // block of ten ints value initialized to 0
要使用 0 以外的其他值进行初始化,
对于指针数组:
int size = 10;
int initVal = 47;
int *ptrArr = new int[size];
std::fill_n(ptrArr, size, initVal);
std::cout << *(ptrArr + 4) << std::endl;
std::cout << ptrArr[4] << std::endl;
对于非指针数组
int size = 10;
int initVal = 47;
int arr[size];
std::fill_n(arr, size, initVal);
几乎适用于任何数据类型!
!小心,一些编译器可能不会抱怨访问超出数组范围的值,这可能会返回非零值
int *a=new int[n];
memset(a, 0, n*sizeof(int));
这会将数组的所有字节设置为 0。char *
同样,您也可以使用 memset。有关更正式的定义和用法,请参见http://www.cplusplus.com/reference/clibrary/cstring/memset/ 。