std :: input_iterator_tag如何与std :: forward_iterator_tag不同?
受到关于C++迭代器的SO答案的启发.在相同的情况下,两个标签似乎都是合适的.
您可以通过前向迭代器设置值. *iter = foo;在输出迭代器中是合法的,但不是输入迭代器,而前向迭代器可以读写,除非它是不可变的.
const SinglelyLinkedList myList = foo();
// a const container should return immutable iterators
SomeIterTypedef immutableIter = myList.begin();
Run Code Online (Sandbox Code Playgroud)输入迭代器可以包装函数的输出.前向迭代器"可用于多遍算法".除非底层容器发生变化,否则前向迭代器的两个副本应产生相同的结果.输入迭代器甚至不必与容器相关联...例如istream_iterator.
我从SGI迭代器页面和特定的输入,输出和转发迭代器页面中提取了所有这些内容.
| 归档时间: |
|
| 查看次数: |
756 次 |
| 最近记录: |