Iinput-iterators是一次通过迭代器,即您只能迭代它们一次.而前向迭代器是多遍的.
另外,对于输入迭代器,a == b并不意味着++ a == ++ b.这意味着输入迭代器上的算法永远不应该尝试两次通过相同的迭代器.它们应该是单通道算法.
编辑给予更多澄清: -
输入迭代器是单遍迭代器: -
这意味着它们一次只能在列表中前进一个元素,并且一旦项目被迭代,它将永远不会再次迭代.例如,考虑一个迭代std :: cin的输入迭代器.它将一次返回一个字符,因为它们已在输入流中准备就绪,但您永远不能"返回"到流中的前一个字符.
前向迭代器是多遍迭代器: -
这意味着您可以"返回"前一个字符,但不能从迭代器对象本身执行此操作
forward_iterator iter = some_list.begin();
forward_iterator iter2 = iter;
item i = *iter; // Legal, we're using a first pass
++iter; // Legal, moving forward
--iter; // Illegal! It's a forward-only iterator
item i2 = *iter2; // Legal, we're using a second pass to read an earlier item
For input iterator this would be illegal.
item i2 = *iter2; //Illegal
Run Code Online (Sandbox Code Playgroud)
希望我很清楚......
| 归档时间: |
|
| 查看次数: |
2312 次 |
| 最近记录: |