4

の深いコピーを作成するためにmyArr

vector <Point> myArr;

Pointメンバーとして2つのintを持つクラスはどこにありますか

何か特別なことをする必要がありますか?または大丈夫です

vector <Point> otherArr = myArr;

いくつかのポイントを削除する必要がありますotherArrが、同時にmyArr、後で使用するためにすべてのポイントを削除する必要があります。

前もって感謝します

4

3 に答える 3

7

浅いコピーと深いコピーおよび効果的なC++を参照してください。

Pointディープコピーは必要ありません。経験則として、クラスにポインタメンバーがある場合は、「ディープコピー」が必要です。Pointクラスのintメンバーは2人だけなので、「ディープコピー」の特別な作業は必要ありません。通常のコピーまたは「浅いコピー」で問題ありません。実際、のコピーコンストラクターを作成する必要Pointはありません。コンパイラーによって提供されるデフォルトまたは合成されたコンストラクターで十分です。

あなたの2番目の質問に関して、行の後

vector< Point > otherArr = myArr;

が実行され、otherArr2myArrつの独立したベクトルです。それらの1つで実行される操作(たとえば、いくつかの要素の削除)は、他の要素にはまったく影響しません。

于 2010-10-09T17:32:16.473 に答える
1

割り当ては問題ないはずです。すべてのデータが正しくコピーされていることを確認します。Pointがコピー可能であることを確認してください。

于 2010-10-09T07:23:24.487 に答える
1

あなたが持っているものは大丈夫です。ベクトルには、ディープコピーを実行するオーバーロードされた代入演算子とコピーコンストラクターがあります。

于 2010-10-09T07:24:07.757 に答える