2016-06-21 5 views
-2

私は何かのベクトル、例えばA = Any[[1,2],[3,4]]を持っています。次に、Aの要素に基づいてC::Vector{Any}という新しい配列を作成したいのですが、実際にはAを変更する必要はありません。 B = copy(A)のコピーを作成しようとしましたが、Bの要素を変更してCに追加すると、Aは変更されませんが、Aは変更されません。今度は深いコピーを使用するように依頼するかもしれませんが、私はまだの最初の要素をCに追加した場合、の未変更要素をAと同じにしたいと考えています。つまり、A[1] == C[1]trueです。変更を行う。 Cは、例えば、Any[[1,2],[3,4,5]]とすることができる。元のベクトルを変更せずにユーザー定義型のベクトルを変更する方法は?

Aを一切変更せずにCを作成するにはどうしたらいいですか?また、変更されていない要素が等しいことを確認してください。

+1

わかりません。 'C = deepcopy(A)'を使うと、 'C'の未変更の要素は' A'の対応する要素と同じになります。たとえば、次のようになります。 'A = Any [[1,2]、[3,4]]; C = deepcopy(A); C [2] = [4,5]; A [1] == C [1] '< - は' true'を返します。 –

+0

私はこの要求が自己矛盾しているように見えることに同意します。要素の変更を同じままにするかどうかを指定しますか?質問を明確にすることはできますか? – StefanKarpinski

+0

申し訳ありませんが、私の質問が混乱していた場合。私は今働いている。お返事をありがとうございます! – Sapna

答えて

1

お試しsimilar(A)引数の配列の特性に基づいて新しい配列を初期化します。

とにかく投稿で言及しているように、copy(A)と表示されています。私はv0.5-devジュリアのバージョンを使用することを言及する必要があります。

あなたの質問は完全にはっきりしていないと言わざるを得ませんが、私の答えが十分であれば、ハッピーコーディングがあります。そうでなければ、私はより明確に答えようとします。

関連する問題