1. ホーム
  2. c++

[解決済み] int[4]をstd::array<int,4>に変換するには?重複

2022-02-09 23:56:14

質問

言語組み込みの配列があり、その要素をコンテナ・ライブラリの配列にコピーして処理する必要があります。いくつか試してみたのですが、うまくいかないようです。ある型を別の型に変換する方法はないのでしょうか?

言語組み込み配列は、次のように宣言されています。

int arr[] = {1,12,343,54,99};

と宣言されているのに対して、ライブラリコンテナ配列は

std::array<int,4> myarray = {4, 26, 80, 14} ;

std::arrayはヘッダーの下で宣言されています。 <array> .

解決方法は?

C++20の場合、以下のようになります。 std::to_array はそのためのものです。

int arr[] = {1,12,343,54};
std::array<int,4> myarray = std::to_array(arr); // could use "auto myarray" instead

C++20以前は、このように std::copy または std::move 要素タイプがコピー不可、またはコピーにコストがかかる場合。

int arr[] = {1,12,343,54};
std::array<int, 4> myarray;
std::copy(arr, arr+4, myarray.begin());
// or
std::copy(std::begin(arr), std::end(arr), myarray.begin());