C++ 命名要求: LegacyInputIterator(遗留输入迭代器)

一个 LegacyInputIterator 是一个 LegacyIterator 可以从指向的元素读取。 LegacyInputIterator 仅保证单遍算法的有效性:一旦 LegacyInputIterator i 已被递增,其先前值的任何副本都可能失效。

要求

类型定义
X一个输入迭代器类型
TX 的 值类型(即 std::iterator_traits<X>::value_type)
Rstd::iterator_traits<X>::reference
定义
i, j类型为 X 或 const X 的值
r类型为 X& 的值
其他定义
m一个标识符,可能表示数据成员或成员函数

X 满足 LegacyInputIterator 如果满足以下所有条件

 表达式 类型效果条件
i != j满足 BooleanTestable 要求
(直到 C++20)
等效于 !(i == j).i 和 j 在 == 的  中。
模型 boolean-testable
(自 C++20)
后 没有明确的要求
*iR,可转换为 T表达式 (void)*i, *i 等效于 *i.如果 i 和 j 在 == 的域中,并且 i == j,则 *i 等效于 *j.i 是 可解引用 的。
没有明确的要求
i->m等效于 (*i).m.i 是可解引用。
没有明确的要求
++rX&r 是可解引用。
r 是可解引用或 r 是尾后。r 先前值的任何副本都不再需要是可解引用或在 == 的域中。
(void)r++等效于 (void)++r.没有明确的要求
*r++可转换为 T等效于
T x = *r;
++r;
return x;.
没有明确的要求

相等域

术语== 的域 在通常的数学意义上用来表示可以用 == 进行比较的值集。此集合可能会随着时间的推移而改变。

每个算法都对它使用的迭代器值的相等域提出了额外的要求。这些要求可以从算法对 == 和 != 的使用推断出来。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部