当我在阅读有关 STL 迭代器的内容时,我在 https://www.sgi.com/tech/stl/Iterators.html 中找到了这篇笔记
The most restricted sorts of iterators are Input Iterators and Output Iterators, both of which permit "single pass" algorithms but do not necessarily support "multi-pass" algorithms.
- “单遍算法”是什么意思
- 上面这句话是什么意思
最佳答案
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
希望我清楚...
关于c++ - 什么是单遍算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26322007/