4

移動セマンティクスなどを備えたC++11では、実際に何を移動できるのか疑問に思うかもしれません。この例は配列です。生の配列の各要素を移動することは可能ですか?

int array1[8];
int array2[8];
array1[0] = std::move(array2[0]);

std :: array、

std::array<int, 8> array1;
std::array<int, 8> array2;
array1[0] = std::move(array2[0]);

およびstd::vector

std::vector<int> array1;
std::vector<int> array2;
array1[0] = std::move(array2[0]);

個別に?

4

1 に答える 1

3

もちろん、とが例のいくつかのデータで適切に初期化されているarray1と仮定します。array2説明した方法で個々の配列要素を処理する場合、単一の変数を移動する場合とまったく同じプロセスです。

Foo var1;
Foo var2;
var1 = std::move(var2);

これは、実際の3つのコードスニペットの実際の例です。

明らかに、移動後にソース変数に「残っている」ものは変数のタイプによって異なりますが、ソース変数から何も読み取る必要がない限り、問題はありません。

于 2013-03-26T06:42:12.080 に答える