問題タブ [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 投票する
1 に答える
1517 参照

django - Django モデルでの deepcopy のオーバーライド

この質問から、Django モデルで deepycopy をオーバーライドするというアイデアを得ました。その質問からコード スニペットを取得し、次の署名を使用してモデルに入れました。

ただし、「フィールド」および「値」パラメーターも渡すことができるようにしたいのですが、これは機能しません。私が呼び出すとき:

kwargs['field'] と kwargs['value'] を使用してパラメーターをメソッド本体から取得しようとすると、次のエラーが発生します。

ちなみに、deepcopy メソッドを使用するには、deepcopy メソッドをインポートする必要があると想定しています。

ここでの私の理解にはいくつかの誤りがあります。説明していただきありがとうございます。

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

java - Java ディープ コピー ライブラリ

ディープコピーできるライブラリはありますか?

ex) 通常のオブジェクト、配列、リスト、入力ストリームなど

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

c# - MicrosoftがBCLでディープクローン機能を作成しなかったのはなぜですか?

彼らは明らかにどこかでそれを使用しました、なぜ彼らはそのような方法として与えなかったのですか?(彼らがどこでもそれを使用しなかったとしても、彼らはまだ私たちにそのような方法を与えたかもしれません)。

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

c++ - QMapにコピーするときのQStringエラー。スコープの問題?

私が持っているQWidgetクラスのデストラクタ内のキーとしてQMapにQStringを追加しようとすると、segfaults(mallocが悪いためにsigabrtsになることもあります)に関して現在立ち往生しています-QStringの暗黙の共有モデルと関係があると思います範囲。

MDIのサブウィンドウとして機能するQWidgetがあります。このQWidgetには、子としていくつかのQGLWidget派生ビューポートインスタンスがあります。サブウィンドウには、プロジェクトファイルの設定を含むQMap <QString、QVariant>ラッパークラスがあります。サブウィンドウを閉じると、デストラクタがQWidget :: deleteChildren()を呼び出して、各ビューポートを削除します。ビューポートデストラクタでは、現在の設定がサブウィンドウの設定に保存されます。例:

保存したいプロパティごとにsWin.setSetting()が呼び出されます。「sWin」は、サブウィンドウデストラクタの最後で削除されるQMapラッパークラスへの参照です。setSetting()を呼び出すまでは、すべて問題ありません。

この設定は最初のビューポートで正常に機能し、2番目の最初のsetSetting()呼び出しで、次の場所でセグメンテーション違反が発生します。

QString参照がQMapに渡されると、ディープコピーが失敗するのがわかりますか?もしそうなら、なぜですか?デストラクタが戻っていないため、作成したQStringはまだスコープから外れていません。そして、なぜこれは最初のビューポートではなく2番目のビューポートで失敗するのでしょうか。

ときどき、sigabrt malloc()が発生します。最初のコード例のsetSetting()行のoperator+でメモリが破損しています。しかし、繰り返しになりますが、最初のビューポートではなく、2番目のビューポートの破壊の開始時に。

非常に言葉の多い質問をお詫びしますが、多くの翻訳ユニットにまたがる大量のコードが関係しています。この問題の手がかりは大いに役立ちます!

前もって感謝します。カム


アップデート

最初のコードサンプルを次のように変更しました。

スコープの問題のテストとして。また、動作する場合もあれば、まったく同じエラーが発生する場合もあります。したがって、おそらくヒープQStringが破棄されているので、メモリ位置が上書きされているかどうかによって異なります。ただし、deleteを呼び出したり、アプリケーションを閉じたりしないため(MDIサブウィンドウのみ)、これも意味がありません。


その他のコード

sWinは、新しいサブウィンドウがインスタンス化されるときにヒープ上に作成されます。これは、サブウィンドウのメソッドからの参照としてビューポートクラスのデストラクタに取り込まれます。

Sy_projectは(現在)QMapの単純なラッパークラスです。私の完全なビューポート基本クラスデストラクタはこれです(派生クラスではなく、ここで失敗します):


Valgrind

Valgrindのmemcheckを使用した後、スタックトレースに似た多数のエントリを発見しました。これまで使用したことがないので、まだ解読中ですが、setSetting()呼び出しの後にSy_projectクラス(QMapのラッパー)が削除され、QMapに無効な参照が残っているということですか?

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

c++ - 二重リンクリストノードのディープコピーを作成する

私のノードは次のように定義されています:

ただし、別のノードにリンクされているノードがある場合(これは明らかによくあることです)、ノードAをコピーすると、次のノードBのコピーがインスタンス化され、次にノードAのコピーがインスタンス化されます。スタックオーバーフローまたはメモリエラーが発生するまで、ノードBなどをコピーしようとします。これは、next(またはprev)の新しいコピーをインスタンス化するだけで修正できますが、このノードに以前(またはnext)にリンクされたものは何もコピーされません。

二重にリンクされたリストノードをコピーする良い方法はありますか?

0 投票する
8 に答える
14372 参照

java - clone()はJavaの浅いコピーですか?

clone()Javaでは浅いコピーですか?

最終的に、これはObject(最上位クラス)のclone()メソッドに到達します。このメソッドは、オブジェクトと同じクラスの新しいインスタンスを作成し、すべてのフィールドを新しいインスタンスにコピーします(「浅いコピー」)。

私はウィキペディアからこれを読みました。

なぜ浅いコピーなのかわかりません。clone()すべてのフィールドで新しいインスタンスを作成します。これは単なる深いコピーですか?混乱している。説明が必要です。

0 投票する
1 に答える
399 参照

ruby - ネストされた配列をコピーする方法と、コピーが元の完全な複製であることを確認する方法

配列内のすべてのオブジェクトが元の「複製」になるように、ネストされた配列をコピーする簡単な方法はありますか? 私は最近これに遭遇します:

したがって、配列の最初のレベルaは個々のオブジェクトでしたが、その内容はそうではありませんでしたが、a[0][1]それでも と同じb[0][1]です。一般的な解決策では、配列がどれだけ深くネストされているかを知る必要さえありません。すべてのオブジェクトを歩き回り、それ自体を複製することは、私には少し強引に聞こえます。

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

object - Ext JSを使用したjQueryディープコピー?

私はExtJSでどうしてできないのか試して驚いた。コードブロックで説明しましょう。

jQueryで

これが出力です

Ext apply、applyIf、copyToはこのようには機能しません。ExtJSで出力を生成するにはどうすればよいですか?

前もって感謝します。

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

c# - 不変オブジェクトの浅いコピーと深いコピー

おはよう、昼も夜も、

特定のクラスを不変クラスとして実装し、プライベート/内部フィールドを公開するメソッドやプロパティを持たない場合、浅いコピーは悪い習慣ですか、インスタンス化する必要があるオブジェクトがはるかに少ないため、問題なく実行できますか?

どうもありがとうございました。