【发布时间】:2016-12-06 17:05:07
【问题描述】:
std::array<int, 4> myarray = {1, 2, 3, 4};
std::array<int, 4> myarray2(std::begin(myarray),std::end(myarray)); //It throws error
如果我可以创建myarray2 的唯一方法是将两个std::array<int, 4>::iterator 传递给构造函数,我是否可以使用std::array 来实现它,还是必须使用vector?
【问题讨论】:
-
查看一些基本参考资料会发现构造函数是隐式声明的,并且必须遵循聚合初始化的规则。由于这不包括迭代器,所以答案是否定的。请记住,
std::array代表一个固定/静态数组,就像传统的 C 样式数组一样。 -
您打算使用 C++17 吗? en.cppreference.com/w/cpp/container/array/begin
-
既然你知道数组的大小,你可以计算
*std::begin(myarray)、*std::next(std::begin(myarray))等,并使用通常的聚合语法std::array<int, 4> myarray2{a,b,c,d};构建myarray2。
标签: c++ arrays constructor