在构造函数中将数组初始化为0

时间:2017-03-16 10:27:37

标签: c++ arrays constructor initialization

在C中,这可以通过

轻松完成
int myArray[10] = { 0 }; // all elements 0

(取自this回答)

我的问题是,C ++中是否存在类似(或相同)的方法,我可以使用它在构造函数中将数组初始化为0?

<小时/> 编辑1

我需要使用初始化列表来完成上述操作。

可能类似

struct aa
{
    int i[10];

    aa() : i {0}{}
};

2 个答案:

答案 0 :(得分:0)

这是一个如何完成的例子

struct A
{
    A() : a{} {}
    enum { N = 10 };
    int a[N];
} a;

或者

struct A
{
    A() : a{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } {}
    enum { N = 10 };
    int a[N];
} a;

for (int x : a.a) std::cout << x << ' ';
std::cout << std::endl;

另一种方法是使用std::array类型的对象。例如

#include <array>

//...

struct A
{
    A() 
    { 
        a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
    }
    enum { N = 10 };
    std::array<int, N> a;
} a;

for (int x : a.a) std::cout << x << ' ';
std::cout << std::endl;

答案 1 :(得分:0)

是。相同的语法适用于C ++,虽然它有不同的名称(列表初始化,或者在这种情况下是特殊情况,聚合初始化)。

但是,在成员初始化列表中,您必须使用不同的语法:List<int[]> Listintegers = yourList .Select(y => y.Select(x => int.Parse(x)).ToArray()) .ToList(); 。请注意,显式初始化第一个元素为0是不必要的,因为这是默认值。