std::experimental::ranges::WeaklyIncrementable
来自 cppreference.com
< cpp | experimental | ranges
定义在头文件 <experimental/ranges/iterator> 中 |
||
template< class I > concept bool WeaklyIncrementable = |
(范围 TS) | |
概念 WeaklyIncrementable<I>
指定了对可以递增(使用前缀和后缀递增运算符)的类型的要求。递增操作不需要是等价保持的,并且该类型不需要是 EqualityComparable
。
设 i 是类型 I
的一个对象。如果 i 属于前缀和后缀递增运算符的定义域,则称 i 是可递增的。只有在以下情况下,才满足 WeaklyIncrementable<I>
:
- ++i 和 i++ 具有相同的定义域;
- 如果 i 是可递增的,则
- ++i 和 i++ 都将 i 推进到下一个元素;并且
- ++i 引用与 i 相同的对象。
[编辑] 等价保持
如果一个表达式在给定相同输入的情况下产生相同的输出,则称该表达式是等价保持的。
- 表达式的输入包括其操作数。
- 表达式的输出包括其结果以及表达式修改的所有操作数(如果有)。
每个被要求是等价保持的表达式还被要求是稳定的:对具有相同输入对象的此类表达式进行两次求值必须具有相同的输出,前提是未对这些输入对象进行任何显式干预修改。
[编辑] 备注
对于 WeaklyIncrementable
类型,a 等于 b 并不意味着 ++a 等于 ++b。对这类类型的算法应该是单遍的,并且永远不要尝试两次遍历同一个值。