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的只是你试图避免的循环的包装器,并且= {};可能以这样的术语实现.
对的,这是可能的.初始化方法取决于上下文.
如果要声明静态或本地数组,请使用= {}初始化程序
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)
| 归档时间: |
|
| 查看次数: |
4605 次 |
| 最近记录: |