将原始数组初始化为一个值

bob*_*205 6 c++ integer zero primitive-types

有没有办法将一个基元数组(比如一个整数数组)初始化为0?不使用for循环?寻找不涉及for循环的简洁代码.

:)

GMa*_*ckG 17

int array[10] = {}; // to 0

std::fill(array, array + 10, x); // to x
Run Code Online (Sandbox Code Playgroud)

请注意,如果您想要更通用的方法来结束:

template <typename T, size_t N>
T* endof(T (&pArray)[N])
{
    return &pArray[0] + N;
}
Run Code Online (Sandbox Code Playgroud)

要得到:

std::fill(array, endof(array), x); // to x (no explicit size)
Run Code Online (Sandbox Code Playgroud)

应该提到std::fill的只是你试图避免的循环的包装器,并且= {};可能以这样的术语实现.


AnT*_*AnT 9

对的,这是可能的.初始化方法取决于上下文.

如果要声明静态或本地数组,请使用= {}初始化程序

int a[100] = {};  // all zeros
Run Code Online (Sandbox Code Playgroud)

如果要创建数组new[],请使用()初始化程序

int *a = new int[100](); // all zeros
Run Code Online (Sandbox Code Playgroud)

如果要在构造函数初始值设定项列表中初始化非静态成员数组,请使用()初始化程序

class C {
  int a[100];

  C() : a() // all zeros
  {
    ...
  }
};
Run Code Online (Sandbox Code Playgroud)