初始化列表到数组

时间:2015-12-10 07:02:19

标签: c++ arrays class constructor initializer-list

截至目前,我有一个班级Permutation,其中包含:

public:
 int elements[N];
 Permutation(std::initializer_list<size_t> data): elements(data) {};

但是当我尝试编译时,我得到了这个:

  

错误:数组初始值设定项必须是初始化列表

我已经搜索了初始化列表中的地狱,尽管没有什么是有用的/我能理解的。所以我对如何使用初始化列表没有最小的想法。

如何编写此构造函数?

更新

我也有这个版本:

public:
 int elements[N];
 Permutation(std::initializer_list<size_t> data): elements(new int[N]) {
     std::copy(data.begin(), data.end(), elements.begin(), elements.end());
 }

我很确定它更加错误,但如果它可以解决,有人可以告诉我该怎么做吗?

1 个答案:

答案 0 :(得分:2)

第二种方法很接近。它需要微小的调整。

Permutation(std::initializer_list<int> data) : elements{}
{
   size_t size = data.size();
   if ( size <= N )
   {
      std::copy(data.begin(), data.end(), std::begin(elements));
   }
   else
   {
      std::copy(data.begin(), data.begin()+N, std::begin(elements));
   }
}