MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
修改算法

MSTL移位和修改算法的实现 更多...

函数

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移位和修改算法的实现

函数说明

◆ copy()

template<typename Iterator1, typename Iterator2, enable_if_t< is_iter_v< Iterator1 > &&is_iter_v< Iterator2 >, int > = 0>
Iterator2 copy ( Iterator1 first,
Iterator1 last,
Iterator2 result )
constexpr

复制范围元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
参数
first输入范围起始
last输入范围结束
result输出范围起始
返回
输出范围结束迭代器

将范围 [first, last) 的元素复制到以 result 开始的位置。 对连续迭代器使用内存移动优化,非连续迭代器使用循环复制。

在文件 shift.hpp82 行定义.

引用了 _INNER.

被这些函数引用 merge(), rotate_copy(), set_difference(), set_symmetric_difference(), set_union() , 以及 shift_left().

◆ copy_backward()

template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_bid_iter_v< Iterator1 > &&is_ranges_bid_iter_v< Iterator2 >, int > = 0>
Iterator2 copy_backward ( Iterator1 first,
Iterator1 last,
Iterator2 result )
constexpr

反向复制范围元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
参数
first输入范围起始
last输入范围结束
result输出范围结束
返回
输出范围起始

将范围 [first, last) 的元素反向复制到以 result-1 开始向前的位置。 用于处理目标范围与源范围重叠的情况。

在文件 shift.hpp219 行定义.

引用了 _INNER.

被这些函数引用 insertion_sort().

◆ copy_if()

template<typename Iterator1, typename Iterator2, typename UnaryPredicate>
Iterator2 copy_if ( Iterator1 first,
Iterator1 last,
Iterator2 result,
UnaryPredicate unary_pred )
constexpr

复制满足谓词的元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
UnaryPredicate一元谓词类型
参数
first输入范围起始
last输入范围结束
result输出范围起始
unary_pred一元谓词
返回
输出范围结束迭代器

复制范围 [first, last) 中满足谓词 unary_pred 的所有元素。

在文件 shift.hpp155 行定义.

◆ copy_n()

template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_input_iter_v< Iterator2 >, int > = 0>
pair< Iterator1, Iterator2 > copy_n ( Iterator1 first,
size_t count,
Iterator2 result )
constexpr

复制指定数量的元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
参数
first输入起始迭代器
count要复制的元素数量
result输出起始迭代器
返回
pair<输入结束迭代器, 输出结束迭代器>

从 first 开始复制 count 个元素到 result。 返回复制后的输入和输出结束迭代器。

在文件 shift.hpp137 行定义.

引用了 _INNER , 以及 count().

◆ fill()

template<typename Iterator, typename T, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
void fill ( Iterator first,
Iterator last,
const T & value )
constexpr

填充范围元素

模板参数
Iterator迭代器类型
T值类型
参数
first范围起始
last范围结束
value要填充的值

将范围 [first, last) 的所有元素设置为 value。

在文件 shift.hpp349 行定义.

◆ fill_n()

template<typename Iterator, typename T, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
Iterator fill_n ( Iterator first,
size_t n,
const T & value )
constexpr

填充指定数量的元素

模板参数
Iterator迭代器类型
T值类型
参数
first起始迭代器
n要填充的元素数量
value要填充的值
返回
填充后的结束迭代器

在文件 shift.hpp365 行定义.

◆ for_each()

template<typename Iterator, typename Function, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
Function for_each ( Iterator first,
Iterator last,
Function f )
constexpr

对范围元素应用函数

模板参数
Iterator迭代器类型
Function函数类型
参数
first范围起始
last范围结束
f要应用的函数
返回
传入的函数对象

对范围 [first, last) 的每个元素应用函数 f。

在文件 shift.hpp420 行定义.

◆ for_each_n()

template<typename Iterator, typename Function, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
Iterator for_each_n ( Iterator first,
const size_t n,
Function f )
constexpr

对指定数量的元素应用函数

模板参数
Iterator迭代器类型
Function函数类型
参数
first起始迭代器
n要处理的元素数量
f要应用的函数
返回
处理后的迭代器

在文件 shift.hpp435 行定义.

◆ generate()

template<typename Iterator, typename Generator, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
void generate ( Iterator first,
Iterator last,
Generator gen )
constexpr

用生成器的值填充范围

模板参数
Iterator迭代器类型
Generator生成器类型
参数
first范围起始
last范围结束
gen生成器函数

对范围 [first, last) 的每个元素调用 gen() 并赋值。

在文件 shift.hpp455 行定义.

◆ generate_n()

template<typename Iterator, typename Generator, enable_if_t< is_ranges_input_iter_v< Iterator >, int > = 0>
Iterator generate_n ( Iterator first,
size_t n,
Generator gen )
constexpr

用生成器的值填充指定数量的元素

模板参数
Iterator迭代器类型
Generator生成器类型
参数
first起始迭代器
n要填充的元素数量
gen生成器函数
返回
填充后的迭代器

在文件 shift.hpp471 行定义.

◆ iter_swap()

template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_input_iter_v< Iterator2 >, int > = 0>
void iter_swap ( Iterator1 a,
Iterator2 b )
constexprnoexcept

交换迭代器指向的元素

模板参数
Iterator1第一个迭代器类型
Iterator2第二个迭代器类型
参数
a第一个迭代器
b第二个迭代器

交换两个迭代器指向的元素的值。

在文件 shift.hpp382 行定义.

引用了 _MSTL , 以及 swap().

被这些函数引用 lomuto_partition(), next_permutation(), partition(), prev_permutation(), quick_sort(), reverse(), shuffle(), shuffle() , 以及 swap_ranges().

◆ move()

template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_input_iter_v< Iterator2 >, int > = 0>
Iterator2 move ( Iterator1 first,
Iterator1 last,
Iterator2 result )
constexpr

移动范围元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
参数
first输入范围起始
last输入范围结束
result输出范围起始
返回
输出范围结束迭代器

将范围 [first, last) 的元素移动到以 result 开始的位置。 移动后源位置的对象状态是未定义的。

在文件 shift.hpp276 行定义.

引用了 _INNER.

被这些函数引用 optional< T >::and_then(), optional< T >::and_then(), optional< T & >::and_then(), optional< T & >::and_then(), async(), barrier< CmplFunc >::barrier(), compressed_pair< IfEmpty, T, Compressed >::compressed_pair(), compressed_pair< IfEmpty, T, false >::compressed_pair(), dynamic_pointer_cast(), exception_ptr::ecb::ecb(), exchange(), future< Res >::get(), exception_ptr::make_exception_ptr, make_reverse_iterator(), binder_front< decay_t< Func >, decay_t< Args >... >::operator()(), binder_front< decay_t< Func >, decay_t< Args >... >::operator()(), optional< T >::operator*(), optional< T >::operator*(), back_insert_iterator< Container >::operator=(), compressed_pair< IfEmpty, T, Compressed >::operator=(), compressed_pair< IfEmpty, T, Compressed >::operator=(), compressed_pair< IfEmpty, T, false >::operator=(), exception_ptr::operator=(), front_insert_iterator< Container >::operator=(), function< Res(Args...)>::operator=(), future< Res >::operator=(), insert_iterator< Container >::operator=(), optional< T >::operator=(), optional< T >::operator=(), optional< T >::operator=(), packaged_task< Res(Args...)>::operator=(), promise< Res >::operator=(), promise< Res & >::operator=(), promise< void >::operator=(), scoped_thread::operator=(), optional< T >::optional(), optional< T >::optional(), optional< T >::or_else(), optional< T & >::or_else(), pair< const Key, T >::pair(), shared_ptr< periodic_task_state >::reset(), unique_ptr< env_value >::reset(), unique_ptr< T[], Deleter >::reset(), reverse_iterator< Iterator >::reverse_iterator(), optional< T >::swap(), swap(), thread::thread(), optional< T >::transform(), optional< T >::transform(), optional< T & >::transform(), optional< T & >::transform(), tree_barrier< CmplFunc >::tree_barrier(), optional< T >::value(), optional< T >::value(), optional< T >::value_or(), optional< T & >::value_or(), barrier< CmplFunc >::wait(), condition_variable::wait_for(), packaged_task< Res(Args...)>::~packaged_task(), promise< Res >::~promise(), promise< Res & >::~promise(), promise< void >::~promise() , 以及 unique_ptr< env_value >::~unique_ptr().

◆ move_backward()

template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_bid_iter_v< Iterator1 > &&is_ranges_bid_iter_v< Iterator2 >, int > = 0>
Iterator2 move_backward ( Iterator1 first,
Iterator1 last,
Iterator2 result )
constexpr

反向移动范围元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
参数
first输入范围起始
last输入范围结束
result输出范围结束
返回
输出范围起始

将范围 [first, last) 的元素反向移动到以 result-1 开始向前的位置。 用于处理目标范围与源范围重叠的情况。

在文件 shift.hpp332 行定义.

引用了 _INNER.

被这些函数引用 shift_right().

◆ replace()

template<typename Iterator, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
void replace ( Iterator first,
Iterator last,
const T & old_value,
const T & new_value )
constexpr

替换范围元素

模板参数
Iterator迭代器类型
T值类型
参数
first范围起始
last范围结束
old_value要替换的旧值
new_value要替换的新值

将范围 [first, last) 中等于 old_value 的所有元素替换为 new_value。

在文件 shift.hpp540 行定义.

◆ replace_copy()

template<typename Iterator1, typename Iterator2, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
Iterator2 replace_copy ( Iterator1 first,
Iterator1 last,
Iterator2 result,
const T & old_value,
const T & new_value )
constexpr

替换并复制元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
T值类型
参数
first输入范围起始
last输入范围结束
result输出范围起始
old_value要替换的旧值
new_value要替换的新值
返回
输出范围结束

将范围 [first, last) 的元素复制到 result,同时将等于 old_value 的元素替换为 new_value。

在文件 shift.hpp495 行定义.

◆ replace_copy_if()

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>
Iterator2 replace_copy_if ( Iterator1 first,
Iterator1 last,
Iterator2 result,
Predicate pred,
const T & new_value )
constexpr

根据谓词替换并复制元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
Predicate谓词类型
T值类型
参数
first输入范围起始
last输入范围结束
result输出范围起始
pred替换谓词
new_value要替换的新值
返回
输出范围结束

将范围 [first, last) 的元素复制到 result,同时将满足 pred 的元素替换为 new_value。

在文件 shift.hpp520 行定义.

◆ replace_if()

template<typename Iterator, typename Predicate, typename T, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
void replace_if ( Iterator first,
Iterator last,
Predicate pred,
const T & new_value )
constexpr

根据谓词替换范围元素

模板参数
Iterator迭代器类型
Predicate谓词类型
T值类型
参数
first范围起始
last范围结束
pred替换谓词
new_value要替换的新值

将范围 [first, last) 中满足 pred 的所有元素替换为 new_value。

在文件 shift.hpp561 行定义.

◆ reverse()

template<typename Iterator, enable_if_t< is_ranges_bid_iter_v< Iterator >, int > = 0>
void reverse ( Iterator first,
Iterator last )
constexpr

反转范围元素顺序

模板参数
Iterator迭代器类型
参数
first范围起始
last范围结束

将范围 [first, last) 的元素顺序反转。

在文件 shift.hpp615 行定义.

引用了 _INNER, _MSTL, is_ranges_rnd_iter_v , 以及 iter_swap().

被这些函数引用 next_permutation() , 以及 prev_permutation().

◆ rotate()

template<typename Iterator, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
void rotate ( Iterator first,
Iterator middle,
Iterator last )
constexpr

旋转范围元素

模板参数
Iterator迭代器类型
参数
first范围起始
middle旋转中心
last范围结束

将范围 [first, last) 旋转,使 middle 成为新的第一个元素。 旋转后范围变为 [middle, last) + [first, middle)。

在文件 shift.hpp753 行定义.

引用了 _INNER.

◆ rotate_copy()

template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
Iterator2 rotate_copy ( Iterator1 first,
Iterator1 middle,
Iterator1 last,
Iterator2 result )
constexpr

旋转并复制元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
参数
first输入范围起始
middle旋转中心
last输入范围结束
result输出范围起始
返回
输出范围结束

将旋转后的范围 [first, last) 复制到 result。

在文件 shift.hpp772 行定义.

引用了 _MSTL , 以及 copy().

◆ shift_left()

template<typename Iterator, enable_if_t< is_ranges_fwd_iter_v< Iterator > &&is_default_constructible_v< iter_value_t< Iterator > >, int > = 0>
void shift_left ( Iterator first,
Iterator last,
size_t n )
constexpr

向左移位

模板参数
Iterator迭代器类型
参数
first范围起始
last范围结束
n移位数量

将范围 [first, last) 的元素向左移动 n 个位置。 移出的元素用默认构造值填充。

在文件 shift.hpp789 行定义.

引用了 _MSTL, copy(), distance(), end(), initialize(), next() , 以及 prev().

◆ shift_right()

template<typename Iterator, enable_if_t< is_ranges_bid_iter_v< Iterator > &&is_default_constructible_v< iter_value_t< Iterator > >, int > = 0>
void shift_right ( Iterator first,
Iterator last,
size_t n )
constexpr

向右移位

模板参数
Iterator迭代器类型
参数
first范围起始
last范围结束
n移位数量

将范围 [first, last) 的元素向右移动 n 个位置。 移出的元素用默认构造值填充。

在文件 shift.hpp818 行定义.

引用了 _MSTL, distance(), end(), initialize(), move_backward(), next() , 以及 prev().

◆ swap_ranges()

template<typename Iterator1, typename Iterator2, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
Iterator2 swap_ranges ( Iterator1 first1,
Iterator1 last1,
Iterator2 first2 )
constexpr

交换两个范围的元素

模板参数
Iterator1第一个范围迭代器类型
Iterator2第二个范围迭代器类型
参数
first1第一个范围起始
last1第一个范围结束
first2第二个范围起始
返回
第二个范围结束迭代器

交换范围 [first1, last1) 和以 first2 开始的范围的对应元素。

在文件 shift.hpp400 行定义.

引用了 _MSTL , 以及 iter_swap().

◆ transform() [1/2]

template<typename Iterator1, typename Iterator2, typename UnaryOperation, enable_if_t< is_ranges_fwd_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
Iterator2 transform ( Iterator1 first,
Iterator1 last,
Iterator2 result,
UnaryOperation op )
constexprnoexcept

对范围元素应用一元变换

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
UnaryOperation一元操作类型
参数
first输入范围起始
last输入范围结束
result输出范围起始
op一元操作函数
返回
输出范围结束

对范围 [first, last) 的每个元素应用 op,结果存储到 result。

在文件 shift.hpp850 行定义.

被这些函数引用 transform_reduce().

◆ transform() [2/2]

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>
Iterator3 transform ( Iterator1 first1,
Iterator1 last1,
Iterator2 first2,
Iterator3 result,
BinaryOperation binary_op )
constexprnoexcept

对两个范围元素应用二元变换

模板参数
Iterator1第一个输入迭代器类型
Iterator2第二个输入迭代器类型
Iterator3输出迭代器类型
BinaryOperation二元操作类型
参数
first1第一个输入范围起始
last1第一个输入范围结束
first2第二个输入范围起始
result输出范围起始
binary_op二元操作函数
返回
输出范围结束

对范围 [first1, last1) 和以 first2 开始的范围的对应元素应用 binary_op, 结果存储到 result。

在文件 shift.hpp876 行定义.

◆ unique() [1/2]

template<typename Iterator, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
Iterator unique ( Iterator first,
Iterator last )
constexpr

移除连续重复元素

模板参数
Iterator迭代器类型
参数
first范围起始
last范围结束
返回
新逻辑结束迭代器

移除范围 [first, last) 中连续的重复元素,保留每个重复组的第一个元素。

在文件 shift.hpp939 行定义.

引用了 _MSTL, adjacent_find() , 以及 unique_copy().

◆ unique() [2/2]

template<typename Iterator, typename BinaryPredicate, enable_if_t< is_ranges_fwd_iter_v< Iterator >, int > = 0>
Iterator unique ( Iterator first,
Iterator last,
BinaryPredicate binary_pred )
constexpr

根据谓词移除连续重复元素

模板参数
Iterator迭代器类型
BinaryPredicate二元谓词类型
参数
first范围起始
last范围结束
binary_pred相等性谓词
返回
新逻辑结束迭代器

使用指定的二元谓词判断元素是否相等,移除连续的重复元素。

在文件 shift.hpp956 行定义.

引用了 _MSTL, adjacent_find() , 以及 unique_copy().

◆ unique_copy() [1/2]

template<typename Iterator1, typename Iterator2>
Iterator2 unique_copy ( Iterator1 first,
Iterator1 last,
Iterator2 result )
constexpr

复制唯一元素(使用相等比较)

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
参数
first输入范围起始
last输入范围结束
result输出范围起始
返回
输出范围结束

在文件 shift.hpp925 行定义.

引用了 _MSTL , 以及 unique_copy().

◆ unique_copy() [2/2]

template<typename Iterator1, typename Iterator2, typename BinaryPredicate, enable_if_t< is_ranges_input_iter_v< Iterator1 > &&is_ranges_fwd_iter_v< Iterator2 >, int > = 0>
Iterator2 unique_copy ( Iterator1 first,
Iterator1 last,
Iterator2 result,
BinaryPredicate binary_pred )
constexpr

复制唯一元素

模板参数
Iterator1输入迭代器类型
Iterator2输出迭代器类型
BinaryPredicate二元谓词类型
参数
first输入范围起始
last输入范围结束
result输出范围起始
binary_pred相等性谓词
返回
输出范围结束

复制范围 [first, last) 中的元素到 result,跳过连续的重复元素。 只有与前一个元素不重复的元素才会被复制。

在文件 shift.hpp905 行定义.

被这些函数引用 unique(), unique() , 以及 unique_copy().