C++ のイテレータは演算ができますが、例えば以下のようなコードを書くと、簡単に無限ループになってしまいます。
cpp
1#include <vector> 2#include <iostream> 3 4int main() 5{ 6 std::vector<int> a = {1, 2, 3}; 7 for (auto it = a.begin(); it != a.end(); std::advance(it, 2)) { 8 std::cout << *it << std::endl; 9 } 10 return 0; 11}
原因は、イテレータ演算を安全に扱う方法が無いせいだと思うのですが、普通はどのように行うのでしょうか。
つまり、
- イテレータが範囲外の位置を指しているかどうかを判定する方法が無い
- イテレータが範囲外の位置を指さないように演算する方法が無い
ということが原因だと思うのですが、これらをイテレータの機能で解決する方法はありますか?
それとも、範囲外にならないようにプログラマーが気をつけてコーディングするしか回避方法がないのでしょうか。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/04 11:37
2016/10/04 12:39
2016/10/05 11:44
2016/10/05 13:47 編集