|
| template<typename Iterator1, typename Iterator2, enable_if_t< is_iter_v< Iterator1 > &&is_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | copy (Iterator1 first, Iterator1 last, Iterator2 result) |
| | 复制范围元素
|
| template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_input_iter_v< Iterator2 >, int > = 0> |
| constexpr pair< Iterator1, Iterator2 > | copy_n (Iterator1 first, size_t count, Iterator2 result) |
| | 复制指定数量的元素
|
| template<typename Iterator1, typename Iterator2, typename UnaryPredicate> |
| constexpr Iterator2 | copy_if (Iterator1 first, Iterator1 last, Iterator2 result, UnaryPredicate unary_pred) |
| | 复制满足谓词的元素
|
| template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_bid_iter_v< Iterator1 > &&is_ranges_bid_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | copy_backward (Iterator1 first, Iterator1 last, Iterator2 result) |
| | 反向复制范围元素
|
| template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_input_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | move (Iterator1 first, Iterator1 last, Iterator2 result) |
| | 移动范围元素
|
| template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_bid_iter_v< Iterator1 > &&is_ranges_bid_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | move_backward (Iterator1 first, Iterator1 last, Iterator2 result) |
| | 反向移动范围元素
|
| template<typename Iterator, typename T, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0> |
| constexpr void | fill (Iterator first, Iterator last, const T &value) |
| | 填充范围元素
|
| template<typename Iterator, typename T, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0> |
| constexpr Iterator | fill_n (Iterator first, size_t n, const T &value) |
| | 填充指定数量的元素
|
| template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_input_iter_v< Iterator2 >, int > = 0> |
| constexpr void | iter_swap (Iterator1 a, Iterator2 b) noexcept(noexcept(_MSTL swap(*a, *b))) |
| | 交换迭代器指向的元素
|
| template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | swap_ranges (Iterator1 first1, Iterator1 last1, Iterator2 first2) |
| | 交换两个范围的元素
|
| template<typename Iterator, typename Function, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0> |
| constexpr Function | for_each (Iterator first, Iterator last, Function f) |
| | 对范围元素应用函数
|
| template<typename Iterator, typename Function, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0> |
| constexpr Iterator | for_each_n (Iterator first, const size_t n, Function f) |
| | 对指定数量的元素应用函数
|
| template<typename Iterator, typename Generator, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0> |
| constexpr void | generate (Iterator first, Iterator last, Generator gen) |
| | 用生成器的值填充范围
|
| template<typename Iterator, typename Generator, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0> |
| constexpr Iterator | generate_n (Iterator first, size_t n, Generator gen) |
| | 用生成器的值填充指定数量的元素
|
| template<typename Iterator1, typename Iterator2, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | replace_copy (Iterator1 first, Iterator1 last, Iterator2 result, const T &old_value, const T &new_value) |
| | 替换并复制元素
|
| template<typename Iterator1, typename Iterator2, typename Predicate, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | replace_copy_if (Iterator1 first, Iterator1 last, Iterator2 result, Predicate pred, const T &new_value) |
| | 根据谓词替换并复制元素
|
| template<typename Iterator, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0> |
| constexpr void | replace (Iterator first, Iterator last, const T &old_value, const T &new_value) |
| | 替换范围元素
|
| template<typename Iterator, typename Predicate, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0> |
| constexpr void | replace_if (Iterator first, Iterator last, Predicate pred, const T &new_value) |
| | 根据谓词替换范围元素
|
| template<typename Iterator, enable_if_t< is_ranges_bid_iter_v< Iterator >, int > = 0> |
| constexpr void | reverse (Iterator first, Iterator last) |
| | 反转范围元素顺序
|
| template<typename Iterator, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0> |
| constexpr void | rotate (Iterator first, Iterator middle, Iterator last) |
| | 旋转范围元素
|
| template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | rotate_copy (Iterator1 first, Iterator1 middle, Iterator1 last, Iterator2 result) |
| | 旋转并复制元素
|
| template<typename Iterator, enable_if_t< is_ranges_fwd_iter_v< Iterator > &&is_default_constructible_v< iter_value_t< Iterator > >, int > = 0> |
| constexpr void | shift_left (Iterator first, Iterator last, size_t n) |
| | 向左移位
|
| template<typename Iterator, enable_if_t< is_ranges_bid_iter_v< Iterator > &&is_default_constructible_v< iter_value_t< Iterator > >, int > = 0> |
| constexpr void | shift_right (Iterator first, Iterator last, size_t n) |
| | 向右移位
|
| template<typename Iterator1, typename Iterator2, typename UnaryOperation, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | transform (Iterator1 first, Iterator1 last, Iterator2 result, UnaryOperation op) noexcept(noexcept(++first) &&noexcept(++result) &&noexcept(*result=op(*first))) |
| | 对范围元素应用一元变换
|
| template<typename Iterator1, typename Iterator2, typename Iterator3, typename BinaryOperation, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 > &&is_ranges_fwd_iter_v< Iterator3 >, int > = 0> |
| constexpr Iterator3 | transform (Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator3 result, BinaryOperation binary_op) noexcept(noexcept(++first1) &&noexcept(first2) &&noexcept(++result) &&noexcept(*result=binary_op(*first1, *first2))) |
| | 对两个范围元素应用二元变换
|
| template<typename Iterator1, typename Iterator2, typename BinaryPredicate, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0> |
| constexpr Iterator2 | unique_copy (Iterator1 first, Iterator1 last, Iterator2 result, BinaryPredicate binary_pred) |
| | 复制唯一元素
|
| template<typename Iterator1, typename Iterator2> |
| constexpr Iterator2 | unique_copy (Iterator1 first, Iterator1 last, Iterator2 result) |
| | 复制唯一元素(使用相等比较)
|
| template<typename Iterator, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0> |
| constexpr Iterator | unique (Iterator first, Iterator last) |
| | 移除连续重复元素
|
| template<typename Iterator, typename BinaryPredicate, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0> |
| constexpr Iterator | unique (Iterator first, Iterator last, BinaryPredicate binary_pred) |
| | 根据谓词移除连续重复元素
|