問題タブ [deep-copy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
8942 参照

php - 参照のPHP配列のディープコピー

したがって、$ arrayは、すべての要素が参照である配列です。

この配列を$resultsという別の配列に(ループ内で)追加したいのですが、これらは参照であるため、PHPは参照をコピーし、$resultsは同一の要素でいっぱいです。

これまでのところ、最善の解決策は次のとおりです。

私はそれが信じられないほど非効率的であることを恐れています。これを行うためのより良い方法はありますか?

0 投票する
3 に答える
4850 参照

c++ - C++ のオーバーロード演算子、代入、ディープ コピー、および加算

私は現在、古い大学の教科書を読み直しながら演算子のオーバーロードについて調査していますが、何かを誤解していると思うので、これが一部の回答者にとって簡単な評判になることを願っています. これが重複している場合は、正しい方向に向けてください。

(この段階では) 1 つのメンバー val (int) を持つ単純なカウンター クラスを作成しました。

これらのカウンターのうち 3 つを varOne から varThree に初期化し、3 番目のカウンターを最初の 2 つの合計にします (たとえば、以下のコードでは varThree.val が 5 に設定されています)。

次のように operator+ をオーバーロードしました。

これを非メンバー関数にし、プライベート値にアクセスできるようにカウンター クラスのフレンドにしました。

私の問題は、別のプライベート メンバーpVal (int へのポインター) を追加するときに始まります。varThree = varOneこれを追加すると、varOne が破棄されても varThree.pVal は引き続き同じメモリ ビットを指しているため、単純なコピーを実行できなくなります。

私はoperator=次のようにオーバーロードしました。

varThree = varOne今、すべてが正しくコピーされるようなことをするvarThree = varOne + varTwoと、次のエラーが発生します。

counter::operator=からの戻り出力に対処するのに問題があるように見え、返される型を受け入れるためにさらにoperator+オーバーロードする必要がありますが、運がなく、何かをしたのではないかと考え始めています根本的に間違っています。operator=operator+

0 投票する
5 に答える
14259 参照

python - copy.deepcopy と pickle

コレクションにはモデルが含まれ、モデルにはウィジェットが含まれるなど、ウィジェットのツリー構造があります。コレクション全体をコピーしたいのですcopy.deepcopyが、オブジェクトを「ピクルしてピクル解除」するよりも高速ですが、C で記述されている cPickle の方がはるかに高速です。

  1. deepcopy の代わりに常に cPickle を使用すべきではないのはなぜですか?
  2. 他のコピーの代替手段はありますか?pickle は deepcopy よりも遅いですが、cPickle は高速であるため、deepcopy の C 実装が勝者になる可能性があります。

サンプル テスト コード:

タイミング:

0 投票する
7 に答える
34801 参照

c - C プログラミング。構造体をディープコピーするには?

「子構造体」が要素として「rusage構造体」を持つ次の2つの構造体があります。

次に、タイプ「子」の 2 つの構造体を作成します。それらを childA と childB と呼びましょう。

rusage 構造体だけを childA から childB にコピーするにはどうすればよいですか?

私は次のようにしましたが、childA で使用法の値を変更すると、childB でも変更されるため、メモリの場所をコピーしていると思います。

私はそれがchildAからのすべての値をchildBに与えることを知っています。childB の他のフィールドは既に処理済みです。必要なのは、「子」構造体にある使用法と呼ばれる rusage 構造体をコピーできることだけです。

0 投票する
5 に答える
17361 参照

c++ - コピー コンストラクター: 抽象クラスのディープ コピー

次のものがあるとします(単純化されたケース):

さて、Material のコピー コンストラクターで抽象的な IColor のディープ コピーを行う方法はありますか? つまり、IColor へのポインタだけでなく、m._color (カラー、テクスチャ) の値をコピーする必要があります。

0 投票する
4 に答える
41917 参照

perl - Perlでハッシュのハッシュをディープコピーする最良の方法は何ですか?

重複の可能性:
Perl でデータ構造のディープ コピーを作成する最良の方法は?

これを自分でコーディングして車輪の再発明を始める前に、ハッシュ参照を複製せずにハッシュのハッシュをコピーするにはどうすればよいでしょうか?

Config::Generalを介してハッシュのハッシュのハッシュを読んでいます。つまり、データ構造は次のとおりです。

次に、構成ファイルを書き換える前に、グループを逆参照して構成からプルし、実行時に内容を変更します。

問題は、変更が行われたかどうかを確認し、システムのファイル構造に関連する変更を加える必要があることです。私はチェックすることによってこれを行うことはできません:

as$group{'item1'}$config{'group'}{'item1'}はどちらもまったく同じ hashref です。

構成ファイルを単純に再解析し、ディスクに保存する直前にディスクから解析されたコピーを編集済みのバージョンと比較するのは簡単ですが、複雑なデータ構造のネストされた逆参照への方法があると確信しています、単に参照自体をコピーするのではなく、ハッシュ参照の内容をコピーします。CPAN をざっと調べただけでは何もわかりません。私は何が欠けていますか?

基準

私の答えを得ました:

結果:

0 投票する
7 に答える
84762 参照

java - Javaで2次元配列のディープコピーを行うにはどうすればよいですか?

これは深いコピーだと思って.clone()、2次元配列で使用して少しだけ得ました。boolean

boolean[][]アレイのディープ コピーを実行するにはどうすればよいですか?

それをループして一連のSystem.arraycopy's を実行する必要がありますか?

0 投票する
4 に答える
350 参照

javascript - 完全に基本的なJavascriptリファレンスの質問

Javascriptコンソールでは次のようになります。

収量:

Object foo=[1]

aの各キーの各配列のbの値でコピーを作成したいと思います。もっと簡単な方法はありますか?

0 投票する
4 に答える
1908 参照

c# - ディープコピーASP.NETGridView

ピアのグループ用のカスタムコントロールを作成していて、障害が発生しています。コントロールの目的は、ネスト、並べ替えなどを使用してグリッドを実装する簡単な方法を提供することです。

ネストを作成するために、残りの子の青写真として機能する子GridViewがあります。開発者が希望どおりに構成できるようにすると、カスタムコントロールが多数の同一のコピーを作成します。

ここでの私の問題は、子グリッドを完全にコピーできないことです。MemberWiseClone()は機能していないようで、GridViewはシリアル化できません。

私の現在の解決策は、必要になることがわかっているフィールド(ID、CssClassなど)のリストを手動でコピーすることですが、それは明らかに不十分であり、EventHandlerにも触れません。

GridViewをディープコピーする良い方法はありますか-または-別の方法を使用して説明した機能を提供しますか?

0 投票する
3 に答える
4697 参照

arrays - Scalaの2D配列のディープコピー?

Scala で 2D 配列のディープ コピーを行うにはどうすればよいですか?

例えば

val b に a の値をコピーさせたいのですが、同じ配列を指さないようにします。