我一直认为“奇异”迭代器是一个已经默认初始化的迭代器,它们可以用作各种类似的哨兵值:
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;
}
}
但是这个答案不仅表明我对“单数”的定义是错误的,而且我上面的比较是完全非法的。
是吗?