問題タブ [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.
python - Python 辞書のディープコピー
次のコンテキストでディープコピーがどのように機能するのか疑問に思っていました:
辞書にあるリストへの参照を返しますか? それとも、期待どおりに動作し、すべてのリストを別の参照で新しいリストにコピーしますか?
ディープ コピーとは何かは知っています (したがって、ディープ コピーとシャロー コピーの違いを説明する必要はありません) が、期待どおりに機能するかどうか疑問に思っているため、使用時にインスタンス変数を変更しませんaddExample()
。
.net - 依存関係のあるLINQtoSQLディープコピーオブジェクト
LINQ to SQLオブジェクトのリストを作成しようとしています。これをデータコンテキストに追加し、後で挿入します。SubmitChanges()を呼び出すと、WeatherForecastオブジェクトの郵便番号外部キーがnullであるというエラーが表示されます。
List.Add()が呼び出されても、依存オブジェクトのディープコピーは実行されないようです。とにかくそれをディープコピーにする方法はありますか?
これは私がやろうとしていることの例です。
php - 参照のPHP配列のディープコピー
したがって、$ arrayは、すべての要素が参照である配列です。
この配列を$resultsという別の配列に(ループ内で)追加したいのですが、これらは参照であるため、PHPは参照をコピーし、$resultsは同一の要素でいっぱいです。
これまでのところ、最善の解決策は次のとおりです。
私はそれが信じられないほど非効率的であることを恐れています。これを行うためのより良い方法はありますか?
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+
python - copy.deepcopy と pickle
コレクションにはモデルが含まれ、モデルにはウィジェットが含まれるなど、ウィジェットのツリー構造があります。コレクション全体をコピーしたいのですcopy.deepcopy
が、オブジェクトを「ピクルしてピクル解除」するよりも高速ですが、C で記述されている cPickle の方がはるかに高速です。
- deepcopy の代わりに常に cPickle を使用すべきではないのはなぜですか?
- 他のコピーの代替手段はありますか?pickle は deepcopy よりも遅いですが、cPickle は高速であるため、deepcopy の C 実装が勝者になる可能性があります。
サンプル テスト コード:
タイミング:
c - C プログラミング。構造体をディープコピーするには?
「子構造体」が要素として「rusage構造体」を持つ次の2つの構造体があります。
次に、タイプ「子」の 2 つの構造体を作成します。それらを childA と childB と呼びましょう。
rusage 構造体だけを childA から childB にコピーするにはどうすればよいですか?
私は次のようにしましたが、childA で使用法の値を変更すると、childB でも変更されるため、メモリの場所をコピーしていると思います。
私はそれがchildAからのすべての値をchildBに与えることを知っています。childB の他のフィールドは既に処理済みです。必要なのは、「子」構造体にある使用法と呼ばれる rusage 構造体をコピーできることだけです。
c++ - コピー コンストラクター: 抽象クラスのディープ コピー
次のものがあるとします(単純化されたケース):
さて、Material のコピー コンストラクターで抽象的な IColor のディープ コピーを行う方法はありますか? つまり、IColor へのポインタだけでなく、m._color (カラー、テクスチャ) の値をコピーする必要があります。
perl - Perlでハッシュのハッシュをディープコピーする最良の方法は何ですか?
重複の可能性:
Perl でデータ構造のディープ コピーを作成する最良の方法は?
これを自分でコーディングして車輪の再発明を始める前に、ハッシュ参照を複製せずにハッシュのハッシュをコピーするにはどうすればよいでしょうか?
Config::Generalを介してハッシュのハッシュのハッシュを読んでいます。つまり、データ構造は次のとおりです。
次に、構成ファイルを書き換える前に、グループを逆参照して構成からプルし、実行時に内容を変更します。
問題は、変更が行われたかどうかを確認し、システムのファイル構造に関連する変更を加える必要があることです。私はチェックすることによってこれを行うことはできません:
as$group{'item1'}
と$config{'group'}{'item1'}
はどちらもまったく同じ hashref です。
構成ファイルを単純に再解析し、ディスクに保存する直前にディスクから解析されたコピーを編集済みのバージョンと比較するのは簡単ですが、複雑なデータ構造のネストされた逆参照への方法があると確信しています、単に参照自体をコピーするのではなく、ハッシュ参照の内容をコピーします。CPAN をざっと調べただけでは何もわかりません。私は何が欠けていますか?
基準
私の答えを得ました:
結果:
java - Javaで2次元配列のディープコピーを行うにはどうすればよいですか?
これは深いコピーだと思って.clone()
、2次元配列で使用して少しだけ得ました。boolean
boolean[][]
アレイのディープ コピーを実行するにはどうすればよいですか?
それをループして一連のSystem.arraycopy
's を実行する必要がありますか?