详细说明,如果我不能做任何这个
some_iterator it1, it2;
some_iterator::difference_type d = it2 - it1;
it1 += some_iterator::difference_type(42);
我应该如何使用(以任何有用的方式)difference_type
?
编辑 @NathanOliver指出,为一对前向迭代器表示的某个范围预先分配足够的空间非常有用。仍在寻找输入/输出迭代器的用途
答案 0 :(得分:2)
例如,请参阅std::distance
和std::advance
。仅仅因为你不能算术地减去迭代器,并不意味着它们之间的距离概念不存在。
答案 1 :(得分:0)
输入迭代器的简单示例:
template <class InputIterator>
typename std::iterator_traits<InputIterator>::reference readNthItem(InputIterator it, typename std::iterator_traits<InputIterator>::difference_type n)
{
std::advance(it, n);
return *it;
}
通常,跳过正在读取的输入序列(例如流)中的某些项是完全有效的操作,并且您需要某些类型来表示要跳过的步数。 / p>