C配列をC++ std :: arrayに割り当てようとしています。
どうすれば、最もクリーンな方法で、不要なコピーを作成せずにそれを行うことができますか?
するとき
int X[8];
std::array<int,8> Y = X;
「適切なコンストラクタが存在しません」というコンパイラエラーが発生します。
プレーン配列からstd::array
への変換はありませんが、要素を一方から他方にコピーできます。
std::copy(std::begin(X), std::end(X), std::begin(Y));
これが実際の例です:
#include <iostream>
#include <array>
#include <algorithm> // std::copy
int main() {
int X[8] = {0,1,2,3,4,5,6,7};
std::array<int,8> Y;
std::copy(std::begin(X), std::end(X), std::begin(Y));
for (int i: Y)
std::cout << i << " ";
std::cout << '\n';
return 0;
}