1. ホーム
  2. c++

[解決済み] std vector C++ -- ディープコピーまたはシャローコピー

2022-02-14 08:45:07

質問

ベクターをコピーすると、ベクターの値も一緒にコピーされるのでしょうか(配列ではうまくいきませんし、ディープコピーではループやmemcpyが必要です)。

説明のヒントをお願いします。

採用情報

解決方法は?

ベクターをコピーするときは、常にディープコピーを行っています。しかし、ベクトルがポインタのベクトルである場合、ポインタのコピーを取得しているのであって、指されている値を取得しているわけではありません。

例えば

std::vector<Foo> f;
std::vector<Foo> cp = f; //deep copy. All Foo copied

std::vector<Foo*> f;
std::vector<Foo*> cp = f; //deep copy (of pointers), or shallow copy (of objects).
//All pointers to Foo are copied, but not Foo themselves