D言語 Part22
■ このスレッドは過去ログ倉庫に格納されています
0456デフォルトの名無しさん
2009/08/06(木) 01:28:21popFrontの挙動って配列スライス(=参照)そっくりなんすよ。
Dでlistを実装するとheadとtoeへのポインタを持つ構造体になるが、
配列の場合は配列長と先頭アドレスのポインタを持つ構造体として表現できる。
スライスは実体を動かさずに配列長と先頭アドレスだけ動かした構造体を作るもので、
listのpopFrontもheadへのポインタを動かしただけの構造体を作る実装になる。
真のメモリ回収はGC任せにするようにする。
そうでないとforeach Rangeに突っ込めないので、そういう使い方を想定しているのかと。
なのでlistにも配列と同じように、dupとidup、内容のコピー(STLのassignみたいな)が必要になるはず。
>>443
というモデルでのスライスのpushFront/Backがあれば挿入できるな。確かに。
……と思っていたが、foreach Rangeのために、popFrontした後のheadの前方要素ポインタのnull代入をしないようにしたんだが、
popFrontしたのに永遠にGCに回収されないモデルだということに気づいた。どうすんだこれ。
■ このスレッドは過去ログ倉庫に格納されています