問題タブ [shallow-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 に答える
133 参照

stl - stlライブラリはポインタのコピー中にmallocを使用しますか?

stlライブラリにポインタをコピーすることに関して質問があります。私が定義すると言う:

struct A{ int x; }

std::map<int, const A*> map1;

次に、Aへのポインタにmallocを使用して、ヒープからのメモリを使用してmap1にデータを入力します。

それから私はします

std::map<int, const A*> map2 = map1;

map2の構造体Aの各ポインターに対して、std :: mapはポインターのシャローコピーを実行しますか、それとも各ポインターのヒープから新しいメモリを割り当てますか?

乾杯

シャンカー

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

c++ - ヒープ オブジェクトと破壊の競合を伴うデータ型の浅いコピー

次のデータ型があります。

でいくつかの計算を行うために、ビジター デザイン パターンが実装されていますA

b_elements問題は、サブセットのみで作業し、特にそれらの要素にビジターを適用したいときに始まります。

1 つの解決策は、元のオブジェクト内の目的の要素を指し、新しく作成されたオブジェクトでビジターを呼び出す別のオブジェクトを作成するAことb_elementsです。しかし、(ご想像のとおり) 問題は、新しいオブジェクトが破棄されるときです。デストラクタは、副作用として元のオブジェクトに影響を与える参照を削除します。

ヒント:b_elementsコストがかかりすぎるため、目的の元のオブジェクトからコピーを作成することはできません。

私の質問は、これは一般的なパターンですか? そのような問題を回避するためのベストプラクティスは何ですか?

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

c++ - C ++でデフォルトとカスタムの両方のコピーコンストラクターを使用するにはどうすればよいですか?

たくさんのデータメンバーがいる長いクラスがあります。そのためのコピーコンストラクターを書きたいです。ただし、独自のコピーコンストラクターを作成すると、デフォルトのコピーコンストラクターにアクセスできなくなります。

自分のコピーコンストラクターでいくつかのポインターを修復したいだけです。そのため、デフォルトのコピーコンストラクターで実行できるオブジェクトの浅いコピーが必要です。

自分のコピーコンストラクターがある場合、デフォルトのコピーコンストラクターにアクセスする可能性はありますか?

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

git - ブランチとともに git 浅いクローン

いくつかのバイナリを含む git リポジトリを処理する必要があります。

誰かが私にこれを説明できれば、本当に感謝しています

つまり、-bを渡すと--depthの動作が変わっているように見えるのはなぜですか?

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

c# - 値型配列のセグメントを浅くコピーします

double []をセグメントに浅くコピーし、次のようにそれらのセグメントを新しいスレッドに渡そうとしています。

作成されたセグメントに元の配列を参照させるための最良の方法は何でしょうか?

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

java - 配列の浅いコピー、単純に newArr = oldArr を実行できないのはなぜですか?

整数の配列「orig」があるとしましょう

私はそれを浅くコピーしたいので、これを行うことはできません:

私の教授は、プリミティブの場合、配列の各インデックスをコピーする必要があるという点で、浅いコピーと深いコピーは本質的に同じであると言いました。しかし、配列全体を別の配列と等しく設定すると、同じことが起こりますよね?

オブジェクト配列について同様の質問があります

これが私のイデオロギーでした

しかし、次のように、各配列インデックスをコピーする必要があると言われました

浅いコピーの場合、配列を別の配列と等しくすることと、各配列インデックスを個別にコピーすることの間に実際に違いはありますか? (深い意味は、まったく新しいオブジェクトを作成する必要があることを理解しています)

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

python - 接続が浅いPythonクラスインスタンスの問題

Pythonで遺伝的アルゴリズムのフレームワークを作成しようとしていますが、浅い/深いコピーで問題が発生しています。私のバックグラウンドは主にC/C ++であり、これらの接続がどのように持続しているかを理解するのに苦労しています。

私が見ているのは、サブクラス内の属性リストの長さが爆発的に増加していることです。私のコードは以下のとおりです...問題を指摘します。

これは単一の遺伝子のクラスです。基本的に、名前、値、およびブールフラグが必要です。私のクラスGene内のリストにデータを入力するインスタンス。Individual

これは私のIndividualクラスです。世代ごとに、これらの母集団が作成され(クラス宣言の後に作成コードを示します)、一般的な遺伝的アルゴリズム操作が適用されます。注目すべきは、print len(self.Genes_)このクラスがインスタンス化されるたびに大きくなる呼び出しです。

ご覧のとおり、各個体には24個の遺伝子が必要ですが、この集団は非常に急速に爆発します。私はこのような新しい個人の初期集団を作成します:

その後、メインループで(ダンプ全体についてお詫びしますが、必要だと感じました。セカンダリ呼び出し(ミューテーション/クロスオーバー)が必要な場合はお知らせください))

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

c++ - ディープコピーとシャローコピーの自動決定のために2つのクラスを実装するにはどうすればよいですか?

次の設計上の問題があります
。2Resource種類のアクセサがあります。

  • 1つはそれを変更することです(それを呼びましょうAccess
  • 1つはconstのようなアクセス用です(これを呼びましょうConst_access)が、c1 = c2と言うと、c1がc2にアクセスします。

それが大きいことを考えるとResource、私は次のコピーメカニズムを達成する必要があります。

の関数を正確に使用できるように書くことを目指してAccessいます。私の現在の実装には欠陥があり、以下を使用しています。Const_accessconstAccess

しかし、ここでConst_access ca; ca.Access::method()はまだ機能し、非定数アクセサーを手動で隠す必要があります。保護された継承またはプライベート継承を試しましたが、それAccess&を処理するための柔軟性が妨げられていConst_Access&ます。

この問題の正しい解決策は何でしょうか?

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

c++ - const インスタンスと非 const インスタンスに異なる copyCtor を記述できますか?

次の問題があります。

私はこれを行うべきクラスを持っています:

継承なしでこれを行うにはどうすればよいですか? (つまり、そうでなければConst_obj継承しObjます。)

編集:

直接使用o.clone()することはオプションではありません。誤ってクローンを作成しないと、簡単にバグが発生する可能性があるからです。

編集:

最後に、Scott Meyers による効果的な C++のアイデアを使用した遅延評価による適切で完全なソリューションがあります。以下の私の答えをチェックしてください。

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

ruby - ハッシュが1次元と2次元の場合、dupは異なる結果をもたらします

dup浅いコピーなので、これを行うとき:

hh_copy同じです:{:one=>{:a=>"a", :b=>"new b"}} はい、その通りです。

しかしh、1次元ハッシュはいつですか。

なんで?