是C 正向/BIDI/随机迭代器总是输出迭代器
Are c++ forward/bidi/random iterators always output iterators?
我在stl上看到了许多文本(例如http://www.cplusplus.com/reference com/reference/std/iterator/),暗示着迭代器(以及通过扩展bidi和随机迭代器))必须满足输入和输出迭代器的要求。这对我来说似乎很奇怪,因为const
迭代器显然是迭代器,但显然是不是输出迭代器。
这种理解的真相是什么?我是否不了解输出迭代器的概念,还是输出迭代器不属于迭代器的不断扩展的需求顺序?(这个想法有一个更好的/官方名称吗?我的意思是,随机迭代器也是bidi迭代器的想法,也是前进的...)
c 03说(24.1/4):
除了其类别,前向,双向或随机访问 迭代器也可能是可变的,也可能是恒定的,具体取决于 表达式 *i作为参考或参考的结果 恒定。不断的迭代器不满足对的要求 输出迭代器和表达式 *i的结果(对于恒定 迭代器i)不能在lvalue是的表达式中使用 需要。
cplusplus.com选择了这一点。标准中的措辞令人困惑,因为它指出"正向迭代器满足输入和输出迭代器的所有要求",并且与下一段说某些远程迭代器不满足输出迭代器的要求。p> C 11简化了一点(24.2.1/3-4):
向前迭代器满足输入迭代器的所有要求, 每当指定输入迭代器时都可以使用;双向 迭代器还满足远期迭代器和 可以在指定前进迭代器时使用;随机访问 迭代器还满足双向迭代器的所有要求 并且可以在指定双向迭代器时使用。
迭代器进一步满足输出迭代器的要求 称为可变迭代器。不可卸下的迭代器被称为 持续的迭代器。
是,否。还有另一个适用于迭代器的资格:它们是否允许突变序列。这个资格是正交向前,双向等,正式,非杂音正向迭代器也必须是非突出输出迭代器。的当然,一个非突出输出迭代器并没有多大意义,一旦您从输出迭代器中删除了突变的操作员,剩下的不多,但是更容易指定和描述以这种方式进行迭代,将突变/非变形视为正交特征。
- 集合上的输出迭代器:assign和increment迭代器
- 访问要输出的矢量迭代器元素
- 在静态库中使用输出迭代器时出现链接器错误
- 在插入容器之前转换输出迭代器
- 根据 boost::iterator_facade 定义基于代理的输出迭代器
- 如何使用迭代器显示以下代码的输出
- C++:为什么输出迭代器不支持比较操作?
- 输入迭代器可以重复读取,而输出迭代器只能写入一次
- 是C 正向/BIDI/随机迭代器总是输出迭代器
- stl风格的算法:如何管理输出迭代器
- 对大量c++错误输出完全一无所知.我认为这与预定义的函数和迭代器有关
- 如何在C++中获取任意 (STL) 输出迭代器的"assignable type"
- 无法复制到输出迭代器
- 重载输出运算符<<以使用 STL 列表迭代器
- 如何在C++中输出迭代器
- 要写入输出迭代器的模板成员函数
- 输入和输出迭代器
- std::transform 中的输入迭代器和输出迭代器来自同一个容器是否安全?
- c++ STL映射迭代器输出十六进制值
- 输入迭代器+输出迭代器+X=正向迭代器