STLのstd::vector
なので、
std::vector<int> vec; std::vector<int>::iterator it; it = vec.begin(); it = it + 10; //← vec.end()を越える for(int i = 0; it != vec.end(); it++){ cout << "What's?" <<endl; //←止まらない i++; }
こういうことをすると無限ループ?(ポインタをインクリメントし続ける)になる。理由は「止まるべき部分をスキップしているから」。なぜSTLのイテレータは、クラスにして、「+」演算子を定義しなかったのだろう。
それならば、Vectorの要素数を超える加算が行われたとき、末尾要素にするというのができただろうに。数学的にも、イテレータを要素とするような空間は、そのVector等の全順序で有限空間に等しいのだから、その空間を越えることができることがおかしいと思うんだよなぁ。
だから、イテレータの加算は「++」しか本来許されないのだね。