MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
shift.hpp 文件参考

MSTL移位和修改算法 更多...

shift.hpp 的引用(Include)关系图:

浏览该文件的源代码.

函数

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)
 根据谓词移除连续重复元素

详细描述

MSTL移位和修改算法

此文件提供了移位和修改算法实现, 包括复制、移动、填充、替换、旋转、反转等序列操作。

在文件 shift.hpp 中定义.