C++ 如何将int[4]转换为std::array<;整数,4>;?

C++ 如何将int[4]转换为std::array<;整数,4>;?,c++,arrays,stl,C++,Arrays,Stl,我有一个语言内置数组,需要将其元素复制到容器库数组中进行一些处理。我试过两种方法,但似乎不起作用。有没有办法把一种类型转换成另一种类型 语言内置数组声明为: int arr[] = {1,12,343,54,99}; std::array<int,4> myarray = {4, 26, 80, 14} ; 库容器数组声明为: int arr[] = {1,12,343,54,99}; std::array<int,4> myarray = {4, 26, 80,

我有一个语言内置数组,需要将其元素复制到容器库数组中进行一些处理。我试过两种方法,但似乎不起作用。有没有办法把一种类型转换成另一种类型

语言内置数组声明为:

int arr[] = {1,12,343,54,99};
std::array<int,4> myarray = {4, 26, 80, 14} ;
库容器数组声明为:

int arr[] = {1,12,343,54,99};
std::array<int,4> myarray = {4, 26, 80, 14} ;
std::array myarray={4,26,80,14};

对于C++20,std::array在头
下声明,这就是std::to_array的用途

intarr[]={1,12343,54};
std::array myarray=std::to_array(arr);//可以改为使用“自动myarray”
在C++20之前,如果元素类型不可复制或复制成本较高,则应使用
std::copy
,或
std::move

intarr[]={1,12343,54};
std::数组myarray;
std::copy(arr,arr+4,myarray.begin());
//或
std::copy(std::begin(arr)、std::end(arr)、myarray.begin());

对于C++20,这就是std::to_数组的用途

intarr[]={1,12343,54};
std::array myarray=std::to_array(arr);//可以改为使用“自动myarray”
在C++20之前,如果元素类型不可复制或复制成本较高,则应使用
std::copy
,或
std::move

intarr[]={1,12343,54};
std::数组myarray;
std::copy(arr,arr+4,myarray.begin());
//或
std::copy(std::begin(arr)、std::end(arr)、myarray.begin());

你能详细说明一下吗?是否要将值从
int[]
复制到
std::array
?在你的例子中,
arr
myarray
有什么关系吗?我想这回答了你的问题。@PankajMishra啊。不幸的是,cplusplus.com有点垃圾。谷歌搜索这个词表明,这个词基本上是他们发明的,没有在其他任何地方使用过。@PankajMishra它肯定不是最“真实”的一个。任何人都可以注册域名,而cplusplus.com恰好是第一个抢到它的人。他们没有任何权威性,大多数专家倾向于避开这个网站。“官方”网站是一个很好的参考。CPPyExcNe.com被广泛认为是C++的官方非正式引用。你能详细阐述一下吗?是否要将值从
int[]
复制到
std::array
?在你的例子中,
arr
myarray
有什么关系吗?我想这回答了你的问题。@PankajMishra啊。不幸的是,cplusplus.com有点垃圾。谷歌搜索这个词表明,这个词基本上是他们发明的,没有在其他任何地方使用过。@PankajMishra它肯定不是最“真实”的一个。任何人都可以注册域名,而cplusplus.com恰好是第一个抢到它的人。他们没有任何权威性,大多数专家倾向于避开这个网站。“官方网站”是一个很好的参考。CPPyExcNe.com被广泛认为是C++的“官方非正式引用”。这回答了我的问题。谢谢。我不认为
to_array
的实现使用任何C++20特定的东西,所以@PankajMishra可以直接从中复制实现。还要注意的是,虽然<代码> STD::复制< /COD>对于<代码> int <代码>是完全好的。但是,您可能希望使用的类型(不是CAST,而是算法)。C++ 20的Yay!这确实回答了我的问题。谢谢。我不认为
to_array
的实现使用任何C++20特定的东西,所以@PankajMishra可以直接从中复制实现。还要注意的是,虽然<代码> STD::复制< /COD>对于<代码> int <代码>是完全好的。但是,您可能希望使用的类型(不是CAST,而是算法)。C++ 20的Yay!