This questionは、ポインタ(この場合はスマートポインタ型)のディープコピーをうまく処理し、this questionはforループを持つコンテナのディープコピーを扱います。ポインタのコンテナを、すべての要素を明白に反復せずに深くコピーすることはできますか?
明示的にすべての要素を反復処理せずにコンテナの完全コピーを実行する方法はありますか?例えば
、あなたはstd::vector<std::shared_ptr<MyObj>> original
を持っていて、新しいstd::vector<std::shared_ptr<MyObj>> copied
がoriginal
からMyObj
の各要素のコピーへのポインタを含むように各ポインタを複製、コンテナ全体をコピーしたい場合。
あなたはヒープ上に 'N'新しいオブジェクトを割り当てる必要があります。何かどこかで、 'new''N''回を呼び出さなければなりません。 –
@IgorTandetnik:それは理にかなっています。私はそのように考えなかった。 – marcman
多相型を指しているときに 'shared_ptr'のディープコピーを自動的に作成する方法はありません。 – Slava