nothrow-input-iterator, nothrow-forward-iterator, nothrow-bidirectional-iterator, no-throw-input-range, nothrow-random-access-iterator

来自cppreference.com


 
 
算法库
受约束算法及范围上的算法 (C++20)
包含算法例如 ranges::copyranges::sort、...
排序和相关操作
划分操作
(C++11)    

排序操作
二分搜索操作(在已划分范围上)
集合操作(在有序范围上)
归并操作(在有序范围上)
堆操作
最小/最大操作
(C++11)
(C++17)
字典序比较操作
排列操作




 
 
template< class I >
concept /*nothrow-input-iterator*/ =
    std::input_iterator<I> &&
    std::is_lvalue_reference_v<std::iter_reference_t<I>> &&
    std::same_as<std::remove_cvref_t<std::iter_reference_t<I>>,
                 std::iter_value_t<I>>;
(1) (仅用于阐述*)
template< class I >
concept /*nothrow-forward-iterator*/ =
    /*nothrow-input-iterator*/<I> &&
    std::forward_iterator<I> &&
    /*nothrow-sentinel-for*/<I, I>;
(2) (仅用于阐述*)
template< class I >
concept /*nothrow-bidirectional-iterator*/ =
    /*nothrow-forward-iterator*/<I> &&
    std::bidirectional_iterator<I>;
(3) (C++26 起)
(仅用于阐述*)
template< class I >
concept /*nothrow-random-access-iterator*/ =
    /*nothrow-bidirectional-iterator*/<I> &&
    std::random_access_iterator<I> &&
    /*nothrow-sized-sentinel-for*/<I, I>;
(4) (C++26 起)
(仅用于阐述*)

这些仅用于阐述的概念指定 <memory> 专门算法所要求的迭代器上的操作均不抛异常。

/*nothrow-sentinel-for*//*nothrow-sentinel-for*/ 的定义见此页

语义要求

1) 只有在 I 类型的有效迭代器的自增、复制构造、移动构造、复制赋值、移动复制和间接操作都不会抛出异常时,类型 I 才会实现 nothrow-input-iterator
3) 只有在 I 类型的有效迭代器的自减操作不会抛出异常时,类型 I 才会实现 nothrow-bidirectional-iterator
4) 只有在 I 类型的有效迭代器之间的比较操作以及 I 类型与 std::iter_difference_t<I> 类型的有效值之间的 -+-=+=[] 运算都不会抛出异常时,类型 I 才会实现 nothrow-random-access-iterator

注解

这些概念允许部分迭代器操作抛出异常。

参阅

指定类型为输入迭代器,即可读取其所引用的值,且可前/后自增
(概念) [编辑]
指定 input_iterator 为向前迭代器,支持相等比较与多趟操作
(概念) [编辑]
指定 forward_iterator 为双向迭代器,支持向后移动
(概念) [编辑]
指定 bidirectional_iterator 为随机访问迭代器,支持常数时间内的前进和下标访问
(概念) [编辑]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.