std::arrayなぜCスタイルの配列=ディープコピーをサポート
のソースコードを読むとき、それはのようなものです:なぜ、この場合の自動私は疑問に思って
template <typename T, int N>
struct array
{
T c_arr[N];
};
生成演算子=ディープコピーをサポートしていますか?
std::array<int, 3> a1{1, 2, 3}, a2;
a2 = a1;
//all the elements in a1.c_arr have been copied to a2.c_arr
copy(begin(a2), end(a2), ostream_iterator<int>(cout,"\t"));
output:
1 2 3
ユーザー定義演算子=がないクラスを定義すると、ディープコピーもサポートされます。 std::array
戻り始めとstd::array
内部の実際の配列の終了イテレータのインスタンスに
struct Test
{
int a[3];
};
Test a1{1, 2, 3}, a2;
a2 = a1;
//all the elements in a1.a have been copied to a2.a
copy(begin(a2), end(a2), ostream_iterator<int>(cout,"\t"));
output:
1 2 3
「ディープコピー」とは、どの意味でですか?配列は構造体に含まれています。 –
配列a1のすべての要素が配列a2にコピーされます。配列をコピーするには、通常ループが必要です。 – camino
'struct'を代入するだけで、オブジェクトの内容全体がコピーされます。生成されたコードにはループが存在する場合とそうでない場合があります。 –