将C数组分配给C++的std::array?(std::array<T,U>=T[U])-从“T[U]”到“std::array<T,U>”之间不存在合适的构造函数

我尝试将C数组赋值给C++ STD::数组。

我如何做到这一点,以最干净的方式,不制作不必要的副本等

当做

intx[8];
std::数组<国际,8>Y=X;

我得到一个编译器错误:“没有合适的构造函数存在”

没有从普通数组到std::array的转换,但您可以将元素从一个复制到另一个:

std::copy(std::begin(X)、std::end(X)、std::begin(Y));

下面是一个工作示例:

#包括<iostream>
#包括<阵列>
#包括<算法>//复制
int main(){
int X[8]={0,1,2,3,4,5,6,7};
标准::数组<int,8>Y;
std::copy(std::begin(X)、std::end(X)、std::begin(Y));
for(int i:Y)
标准::cout<<i<“”;
标准::cout<<'\n';
返回0;
}

发表评论