や、ハマったってほどでもないんだけど、まあそうだよね、って感じたメモ。
以下のように書いて、bar
とqux
をlistから排除しようとした
bar
は排除できてるけど、qux
は排除できてないことがわかる。
原因
Remove(e)を呼んだ時点で、eの後ろのポインタもnilになるので、Nextがnilになってループの終了条件にひっかかる。
解決
本当にはずかしながら、思いつかなかった↓
RemoveしてからNextするからいけないのであって、先に次のポインタを取得しておけばよいのだ
雑感
- 再初期化式でNext呼ぶことしか考えてなかった...
- 俺、才能無えわ
DRYな備忘録