有没有办法将基元数组(比如整数数组)初始化为 0?不使用 for 循环?寻找不涉及 for 循环的简洁代码。
:)
int array[10] = {}; // to 0
std::fill(array, array + 10, x); // to x
请注意,如果您想要一种更通用的方式来结束:
template <typename T, size_t N>
T* endof(T (&pArray)[N])
{
return &pArray[0] + N;
}
要得到:
std::fill(array, endof(array), x); // to x (no explicit size)
应该提到std::fill
它只是您试图避免的循环的包装,并且= {};
可能以这样的方式实现。
对的,这是可能的。初始化方法取决于上下文。
如果要声明静态或本地数组,请使用= {}
初始化程序
int a[100] = {}; // all zeros
如果您要创建一个数组,请new[]
使用()
初始化程序
int *a = new int[100](); // all zeros
如果要在构造函数初始化程序列表中初始化非静态成员数组,请使用()
初始化程序
class C {
int a[100];
C() : a() // all zeros
{
...
}
};
如果数字为零,您也可以使用 memset(尽管这更像是 C 风格):
int a[100];
memset(a, 0, sizeof(a));
如果您希望所有值都为零,则可以使用 memset。此外,如果您只想初始化为零,您可以声明您的数组,使其放置在内存的 ZI 部分中。
有一些方法可以用不同的语法隐藏你正在做的事情,这就是其他答案给你的 -std::fill, memset, ={}
等等。但在一般情况下(不包括像 ZI 这样的编译器特定技巧),想想需要做什么通过编译的代码:
换句话说,需要有一个相当基本的循环。
double A[10] = { value }; // initialize A to value
. 我不记得值是否必须编译为常量。不适用于自动数组