list<T>::iterator | spin on the RITZ

list<T>::iterator

ちょっとC++のリストを使うことになりそうなので、どんなもんかな~っといじってます。

大体はvectorとかと一緒だし、まぁなんとかなるかと思ってますが。。。



ちょっと問題がありまして。



題名の通り、イテレータを使って各要素を参照するようなプログラムを書いてたんですが、ちょっとした間違いで終了条件が間違ってたわけなんですよ。

普通、配列とかなら所謂セグメントエラーが出るわけなんですが、listを使った今回は無限ループするんですよ。



どういうことでしょうかね?



intのリストに1~3をpush_back()しておいて、終了条件を書かずにイテレータだけを一つずつすすめて要素を表示していくんですが、


1

2

3

0

1

2

3

0

…(以下無限ループ)


ってなるんですよねぇ。。。

0が出ているのは多分end()で参照できるやつでしょう。


end()以降はbegin()に戻ったりするの???

循環リストみたくなっちゃってるんですがorz



う~ん、イテレータがどんな風に実装されてるかわかんないからなぁ・・・・・・・