[過去ログ] プログラミング言語 Rust 4 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
74
(2): 70 2017/11/08(水)20:27 ID:iPjR8aCv(1) AAS
外部リンク:ideone.com
・AA treeを実装
・1.8.0で主に確認(ideoneは1.14.0)
・今回はOption<Box<Node<T>>>中心に実装
・Tも<T: Copy>でコピーしちゃう
・肝心の木の操作部分は、wikipediaでの表現に近くなるように表現
・前の奴>>70のコピペから開始してるから妙なとこ残ってるかも

>>72
wikipedia見ただけでそのへんに着目できたのってすごい
前回は実はそこで一旦あきらめてコピーとOption<T>の導入に踏み切った
今回もTのコピーうんぬんについては挑戦せずそのまんまコピーしてる
75
(2): 2017/11/09(木)01:32 ID:kYfp6pnU(1/2) AAS
>>73 Option::takeを使って子ノードのsuccかpredの値を取ってくるとすると、その子ノードの値はNothingになるよね?
wikipediaの例だとその後にdeleteを再帰的に行うことで(delete内で適宜skew&splitを呼んでる)バランスを保つよう処理してるけど、Nothingが入ってる時点でうまく動く保証が無い
そのスレで書いてくれたものは要素としてCopyであるi32を使ってるから問題が見えないんじゃないかと思う

>>74 自分も>>73の例を見る前に多相型でちょっと書いてみて、どうすんだこれって気付いたんで偉そうなこと言えないっす
Rust固有の問題じゃないような気がしてるよ。C++とかで多相型にしてみたとしても、「子ノードの値を自身の値にする」って部分でコピーが行われる気がしてならない
一瞬だけどAA木の中に同じ値を持つノードが発生しているから、AA木の実装を綺麗に書こうとしたらT:Copy or T:Cloneって制約は必須なんじゃないかと
78: 77 2017/11/09(木)19:45 ID:1u6Rcsa8(2/2) AAS
×・>>70の<T: Copy>を<T: Clone>に変更
○・>>74の<T: Copy>を<T: Clone>に変更
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.216s*