の深いコピーを作成するためにmyArr
、
vector <Point> myArr;
Point
メンバーとして2つのintを持つクラスはどこにありますか
何か特別なことをする必要がありますか?または大丈夫です
vector <Point> otherArr = myArr;
いくつかのポイントを削除する必要がありますotherArr
が、同時にmyArr
、後で使用するためにすべてのポイントを削除する必要があります。
前もって感謝します
浅いコピーと深いコピーおよび効果的なC++を参照してください。
Point
ディープコピーは必要ありません。経験則として、クラスにポインタメンバーがある場合は、「ディープコピー」が必要です。Point
クラスのint
メンバーは2人だけなので、「ディープコピー」の特別な作業は必要ありません。通常のコピーまたは「浅いコピー」で問題ありません。実際、のコピーコンストラクターを作成する必要Point
はありません。コンパイラーによって提供されるデフォルトまたは合成されたコンストラクターで十分です。
あなたの2番目の質問に関して、行の後
vector< Point > otherArr = myArr;
が実行され、otherArr
2myArr
つの独立したベクトルです。それらの1つで実行される操作(たとえば、いくつかの要素の削除)は、他の要素にはまったく影響しません。
割り当ては問題ないはずです。すべてのデータが正しくコピーされていることを確認します。Pointがコピー可能であることを確認してください。
あなたが持っているものは大丈夫です。ベクトルには、ディープコピーを実行するオーバーロードされた代入演算子とコピーコンストラクターがあります。