私はいつも、「特異な」イテレータはデフォルトで初期化されたイテレータであり、これらはある種の同等のセンチネル値として機能すると考えていました。
typedef std::vector<Elem>::iterator I;
I start = I();
std::vector<Elem> container = foo();
for (I it = container.begin(), end = container.end(); it != end; ++it) {
if ((start == I()) && bar(it)) {
// Does something only the first time bar(it) is satisfied
// ...
start = it;
}
}
しかし、この答えは、「単数」の私の定義が間違っているだけでなく、上記の比較が完全に違法であることも示唆しています。
それは...ですか?