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

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

修改算法 的协作图:

函数

template<typename Iterator1, typename Iterator2>
constexpr Iterator2 copy (Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__copy_aux(first, last, result)))
 复制范围元素
template<typename Iterator1, typename Iterator2>
constexpr pair< Iterator1, Iterator2 > copy_n (Iterator1 first, iter_difference_t< Iterator1 > count, Iterator2 result)
 复制指定数量的元素
template<typename Iterator1, typename Iterator2, typename Pred>
constexpr Iterator2 copy_if (Iterator1 first, Iterator1 last, Iterator2 result, Pred pred)
 复制满足谓词的元素
template<typename Iterator1, typename Iterator2>
constexpr Iterator2 copy_backward (Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__copy_backward_aux(first, last, result)))
 反向复制范围元素
template<typename Iterator1, typename Iterator2>
constexpr Iterator2 move (Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
 移动范围元素
template<typename Iterator1, typename Iterator2>
constexpr Iterator2 move_backward (Iterator1 first, Iterator1 last, Iterator2 result)
 反向移动范围元素
template<typename Iterator, typename T>
constexpr void fill (Iterator first, Iterator last, const T &value) noexcept(is_nothrow_assignable_v< iter_value_t< Iterator >, T >)
 填充范围元素
template<typename Iterator, typename T>
constexpr Iterator fill_n (Iterator first, iter_difference_t< Iterator > n, const T &value) noexcept(is_nothrow_assignable_v< iter_value_t< Iterator >, T >)
 填充指定数量的元素
template<typename Iterator1, typename Iterator2>
constexpr void iter_swap (Iterator1 a, Iterator2 b) noexcept(noexcept(_NEFORCE swap(*a, *b)))
 交换迭代器指向的元素
template<typename Iterator1, typename Iterator2>
constexpr Iterator2 swap_ranges (Iterator1 first1, Iterator1 last1, Iterator2 first2)
 交换两个范围的元素
template<typename Iterator, typename Function>
constexpr Function for_each (Iterator first, Iterator last, Function f)
 对范围元素应用函数
template<typename Iterator, typename Function>
constexpr Iterator for_each_n (Iterator first, iter_difference_t< Iterator > n, Function f)
 对指定数量的元素应用函数
template<typename Iterator, typename Generator>
constexpr void generate (Iterator first, Iterator last, Generator gen)
 用生成器的值填充范围
template<typename Iterator, typename Generator>
constexpr Iterator generate_n (Iterator first, iter_difference_t< Iterator > n, Generator gen)
 用生成器的值填充指定数量的元素
template<typename Iterator1, typename Iterator2, typename T>
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>
constexpr Iterator2 replace_copy_if (Iterator1 first, Iterator1 last, Iterator2 result, Predicate pred, const T &new_value)
 根据谓词替换并复制元素
template<typename Iterator, typename T>
constexpr void replace (Iterator first, Iterator last, const T &old_value, const T &new_value)
 替换范围元素
template<typename Iterator, typename Predicate, typename T>
constexpr void replace_if (Iterator first, Iterator last, Predicate pred, const T &new_value)
 根据谓词替换范围元素
template<typename Iterator>
constexpr void reverse (Iterator first, Iterator last)
 反转范围元素顺序
template<typename Iterator>
constexpr void rotate (Iterator first, Iterator middle, Iterator last)
 旋转范围元素
template<typename Iterator1, typename Iterator2>
constexpr Iterator2 rotate_copy (Iterator1 first, Iterator1 middle, Iterator1 last, Iterator2 result)
 旋转并复制元素
template<typename Iterator>
constexpr void shift_left (Iterator first, Iterator last, iter_difference_t< Iterator > n)
 向左移位
template<typename Iterator>
constexpr void shift_right (Iterator first, Iterator last, iter_difference_t< Iterator > n)
 向右移位
template<typename Iterator1, typename Iterator2, typename UnaryOperation>
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>
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>
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>
constexpr Iterator unique (Iterator first, Iterator last)
 移除连续重复元素
template<typename Iterator, typename BinaryPredicate>
constexpr Iterator unique (Iterator first, Iterator last, BinaryPredicate binary_pred)
 根据谓词移除连续重复元素

详细描述

移位和修改算法的实现

函数说明

◆ copy()

template<typename Iterator1, typename Iterator2>
Iterator2 copy ( Iterator1 first,
Iterator1 last,
Iterator2 result )
constexprnoexcept

复制范围元素

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

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

在文件 shift.hpp91 行定义.

引用了 is_ranges_input_iter_v.

被这些函数引用 array< byte_t, MAC_LEN >::array(), counting_sort(), deque< T, Alloc, BufSize >::erase(), deque< T, Alloc, BufSize >::erase(), mac_address::mac_address(), merge(), deque< T, Alloc, BufSize >::operator=(), vector< byte_t >::operator=(), rotate_copy(), set_difference(), set_symmetric_difference(), set_union() , 以及 shift_left().

◆ copy_backward()

template<typename Iterator1, typename Iterator2>
Iterator2 copy_backward ( Iterator1 first,
Iterator1 last,
Iterator2 result )
constexprnoexcept

反向复制范围元素

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

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

在文件 shift.hpp246 行定义.

引用了 is_ranges_bid_iter_v.

被这些函数引用 deque< T, Alloc, BufSize >::erase(), deque< T, Alloc, BufSize >::erase(), vector< byte_t >::insert() , 以及 insertion_sort().

◆ copy_if()

template<typename Iterator1, typename Iterator2, typename Pred>
Iterator2 copy_if ( Iterator1 first,
Iterator1 last,
Iterator2 result,
Pred pred )
constexpr

复制满足谓词的元素

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

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

在文件 shift.hpp173 行定义.

引用了 is_ranges_input_iter_v.

◆ copy_n()

template<typename Iterator1, typename Iterator2>
pair< Iterator1, Iterator2 > copy_n ( Iterator1 first,
iter_difference_t< Iterator1 > count,
Iterator2 result )
constexpr

复制指定数量的元素

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

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

在文件 shift.hpp153 行定义.

引用了 count() , 以及 is_ranges_input_iter_v.

◆ fill()

template<typename Iterator, typename T>
void fill ( Iterator first,
Iterator last,
const T & value )
constexprnoexcept

填充范围元素

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

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

在文件 shift.hpp398 行定义.

引用了 is_assignable_v, is_nothrow_assignable_v , 以及 is_ranges_input_iter_v.

被这些函数引用 vector< byte_t >::assign(), bitmap::bitmap(), bitmap::bitmap(), bloom_filter< T, Hash >::clear(), bitmap::insert(), vector< byte_t >::insert(), radix_sort_greater() , 以及 radix_sort_less().

◆ fill_n()

template<typename Iterator, typename T>
Iterator fill_n ( Iterator first,
iter_difference_t< Iterator > n,
const T & value )
constexprnoexcept

填充指定数量的元素

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

在文件 shift.hpp418 行定义.

引用了 is_assignable_v, is_nothrow_assignable_v , 以及 is_ranges_input_iter_v.

被这些函数引用 vector< byte_t >::assign() , 以及 array< byte_t, MAC_LEN >::fill().

◆ for_each()

template<typename Iterator, typename Function>
Function for_each ( Iterator first,
Iterator last,
Function f )
constexpr

对范围元素应用函数

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

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

在文件 shift.hpp478 行定义.

引用了 is_invocable_v , 以及 is_ranges_input_iter_v.

◆ for_each_n()

template<typename Iterator, typename Function>
Iterator for_each_n ( Iterator first,
iter_difference_t< Iterator > n,
Function f )
constexpr

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

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

在文件 shift.hpp498 行定义.

引用了 is_invocable_v , 以及 is_ranges_input_iter_v.

◆ generate()

template<typename Iterator, typename Generator>
void generate ( Iterator first,
Iterator last,
Generator gen )
constexpr

用生成器的值填充范围

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

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

在文件 shift.hpp521 行定义.

引用了 is_assignable_v, is_invocable_v , 以及 is_ranges_input_iter_v.

被这些函数引用 random_lcd::next_float(), random_mt::next_float(), random_lcd::next_int() , 以及 random_mt::next_int().

◆ generate_n()

template<typename Iterator, typename Generator>
Iterator generate_n ( Iterator first,
iter_difference_t< Iterator > n,
Generator gen )
constexpr

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

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

在文件 shift.hpp542 行定义.

引用了 is_assignable_v, is_invocable_v , 以及 is_ranges_input_iter_v.

◆ iter_swap()

template<typename Iterator1, typename Iterator2>
void iter_swap ( Iterator1 a,
Iterator2 b )
constexprnoexcept

交换迭代器指向的元素

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

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

在文件 shift.hpp440 行定义.

引用了 is_ranges_input_iter_v , 以及 swap().

被这些函数引用 adjust_leonardo_heap(), bubble_sort(), cocktail_sort(), lomuto_partition(), next_permutation(), partition(), prev_permutation(), quick_sort(), basic_string< char >::reverse(), reverse(), select_sort(), shuffle(), shuffle() , 以及 swap_ranges().

◆ move()

template<typename Iterator1, typename Iterator2>
Iterator2 move ( Iterator1 first,
Iterator1 last,
Iterator2 result )
constexprnoexcept

移动范围元素

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

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

在文件 shift.hpp313 行定义.

引用了 is_ranges_input_iter_v.

被这些函数引用 env_builder::add(), env_builder::add(), env_document::add_comment(), json_array::add_element(), toml_array::add_element(), json_object::add_member(), toml_table::add_member(), ini_section::add_property(), ini_document::add_section(), timer_scheduler< Clock >::add_task(), env_document::add_variable(), trace_allocator< U >::allocate(), optional< T >::and_then(), optional< T >::and_then(), optional< T & >::and_then(), optional< T & >::and_then(), basic_string< char >::append(), basic_string< char >::append(), basic_string< char >::assign(), async(), atomic< weak_ptr< T > >::atomic(), task< T >::awaiter::await_resume(), barrier< CmplFunc >::barrier(), basic_string< char >::basic_string(), bitmap::bitmap(), check_type(), atomic< shared_ptr< T > >::compare_exchange_strong(), atomic< weak_ptr< T > >::compare_exchange_strong(), atomic< shared_ptr< T > >::compare_exchange_weak(), atomic< shared_ptr< T > >::compare_exchange_weak(), atomic< weak_ptr< T > >::compare_exchange_weak(), atomic< weak_ptr< T > >::compare_exchange_weak(), compressed_pair< IfEmpty, T, Compressed >::compressed_pair(), compressed_pair< IfEmpty, T, false >::compressed_pair(), signal< Types >::connect(), signal< Types >::connect(), signal< Types >::connect(), signal< Types >::connect_filtered(), signal< Types >::connect_if(), signal< Types >::connect_if(), signal< Types >::connect_transformed(), meta_type::constructor(), http_content::content(), http_cookie_name::cookie_name(), logger::debug(), dynamic_pointer_cast(), exception_ptr::ecb::ecb(), signal< Types >::emit_executor(), vector< byte_t >::emplace(), env_variable::env_variable(), vector< byte_t >::erase(), logger::error(), tuple< This, Rest... >::explicit(), tuple< This, Rest... >::explicit(), logger::fatal(), generator< T >::fold(), meta_type::function(), type_builder< T >::function(), type_builder< T >::function(), future< Res >::get(), get(), get(), meta_property::get(), task< T >::get(), get_current_task_group(), hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::hashtable(), hazard_pointer_obj< T, Deleter >::hazard_pointer_obj(), http_method::http_method(), idb_factory::idb_factory(), logger::info(), ini_parser::ini_parser(), deque< T, Alloc, BufSize >::insert(), list< pair< Key, Value > >::insert(), map< Key, T, Compare, Alloc >::insert(), map< Key, T, Compare, Alloc >::insert(), multimap< Key, T, Compare, Alloc >::insert(), multimap< Key, T, Compare, Alloc >::insert(), multiset< Key, Compare, Alloc >::insert(), multiset< Key, Compare, Alloc >::insert(), set< Key, Compare, Alloc >::insert(), set< Key, Compare, Alloc >::insert(), unordered_multimap< Key, T, HashFcn, EqualKey, Alloc >::insert(), unordered_multiset< Value, HashFcn, EqualKey, Alloc >::insert(), vector< byte_t >::insert(), hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::insert_equal(), rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::insert_equal(), rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::insert_equal(), hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::insert_unique(), rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::insert_unique(), rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::insert_unique(), meta_function::invoke(), exception_ptr::make_exception_ptr, make_reverse_iterator(), make_shared(), map< Key, T, Compare, Alloc >::map(), meta_function::meta_function(), meta_property::meta_property(), http_method::method(), multimap< Key, T, Compare, Alloc >::multimap(), multiset< Key, Compare, Alloc >::multiset(), mysql_factory::mysql_factory(), path_tree::node::node(), binder_front< decay_t< Func >, decay_t< Args >... >::operator()(), binder_front< decay_t< Func >, decay_t< Args >... >::operator()(), formatter< T, enable_if_t< is_floating_point_v< T > > >::operator()(), optional< T >::operator*(), optional< T >::operator*(), basic_string< char >::operator+=(), back_insert_iterator< Container >::operator=(), basic_string< char >::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=(), http_content::operator=(), http_cookie_name::operator=(), http_method::operator=(), http_method::operator=(), insert_iterator< Container >::operator=(), map< Key, T, Compare, Alloc >::operator=(), multimap< Key, T, Compare, Alloc >::operator=(), multiset< Key, Compare, Alloc >::operator=(), optional< T >::operator=(), optional< T >::operator=(), optional< T >::operator=(), packaged_task< Res(Args...)>::operator=(), promise< Res >::operator=(), promise< Res & >::operator=(), promise< void >::operator=(), rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::operator=(), scoped_connection::operator=(), scoped_thread::operator=(), unordered_map< Key, T, HashFcn, EqualKey, Alloc >::operator=(), unordered_multimap< Key, T, HashFcn, EqualKey, Alloc >::operator=(), unordered_multiset< Value, HashFcn, EqualKey, Alloc >::operator=(), unordered_set< Value, HashFcn, EqualKey, Alloc >::operator=(), map< Key, T, Compare, Alloc >::operator[](), optional< T >::optional(), optional< T >::optional(), optional< T >::optional(), optional< T >::or_else(), optional< T & >::or_else(), pair< const Key, T >::pair(), path_tree::path_tree(), pgsql_factory::pgsql_factory(), vector< byte_t >::pop_back_v(), priority_queue< T, Sequence, Compare >::priority_queue(), priority_queue< T, Sequence, Compare >::priority_queue(), meta_type::property(), type_builder< T >::property(), priority_queue< T, Sequence, Compare >::push(), queue< T, Sequence >::push(), stack< T, Sequence >::push(), deque< T, Alloc, BufSize >::push_back(), local_queue::push_back(), vector< byte_t >::push_back(), deque< T, Alloc, BufSize >::push_front(), queue< T, Sequence >::queue(), rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::rb_tree(), plugin_deleter::rebind(), redis_factory::redis_factory(), scoped_connection::release(), basic_string< char >::repeat(), bitmap::reserve(), shared_ptr< periodic_task_state >::reset(), unique_ptr< T[], Deleter >::reset(), unique_ptr<::X509, x509_deleter >::reset(), hazard_pointer_domain::retire(), task< T >::promise_type::return_value(), reverse_iterator< base_iterator >::reverse_iterator(), scope_exit< Func >::scope_exit(), scope_success< Func >::scope_success(), meta_property::set(), set< Key, Compare, Alloc >::set(), dns_client::set_config(), ini_section::set_name(), ini_section::set_property(), env_variable::set_value(), ini_property::set_value(), env_document::set_variable(), shell_sort(), shift_left(), shift_right(), sqlite_factory::sqlite_factory(), ssl_socket::ssl_socket(), stack< T, Sequence >::stack(), type_builder< T >::static_function(), color::swap(), optional< T >::swap(), thread::thread(), to_string< char >(), to_u16string< char16_t >(), to_u32string< char32_t >(), to_u8string< char8_t >(), to_wstring< wchar_t >(), logger::trace(), optional< T >::transform(), optional< T >::transform(), optional< T & >::transform(), optional< T & >::transform(), tree_barrier< CmplFunc >::tree_barrier(), iobject< T >::try_parse(), unordered_map< Key, T, HashFcn, EqualKey, Alloc >::unordered_map(), unordered_multimap< Key, T, HashFcn, EqualKey, Alloc >::unordered_multimap(), unordered_multiset< Value, HashFcn, EqualKey, Alloc >::unordered_multiset(), unordered_set< Value, HashFcn, EqualKey, Alloc >::unordered_set(), json_builder::value(), optional< T >::value(), optional< T >::value(), toml_builder::value(), toml_builder::value(), optional< T >::value_or(), optional< T & >::value_or(), toml_builder::value_string(), atomic< shared_ptr< T > >::wait(), atomic< weak_ptr< T > >::wait(), barrier< CmplFunc >::wait(), condition_variable::wait_for(), logger::warn(), packaged_task< Res(Args...)>::~packaged_task(), promise< Res >::~promise(), promise< Res & >::~promise(), promise< void >::~promise() , 以及 unique_ptr<::X509, x509_deleter >::~unique_ptr().

◆ move_backward()

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

反向移动范围元素

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

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

在文件 shift.hpp377 行定义.

引用了 is_ranges_bid_iter_v.

被这些函数引用 vector< byte_t >::emplace(), vector< byte_t >::erase() , 以及 shift_right().

◆ replace()

template<typename Iterator, typename T>
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.hpp623 行定义.

引用了 is_assignable_v , 以及 is_ranges_fwd_iter_v.

◆ replace_copy()

template<typename Iterator1, typename Iterator2, typename T>
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.hpp570 行定义.

引用了 is_assignable_v , 以及 is_ranges_fwd_iter_v.

◆ replace_copy_if()

template<typename Iterator1, typename Iterator2, typename Predicate, typename T>
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.hpp598 行定义.

引用了 is_assignable_v, is_invocable_v , 以及 is_ranges_fwd_iter_v.

◆ replace_if()

template<typename Iterator, typename Predicate, typename T>
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.hpp647 行定义.

引用了 is_assignable_v, is_invocable_v , 以及 is_ranges_fwd_iter_v.

◆ reverse()

template<typename Iterator>
void reverse ( Iterator first,
Iterator last )
constexpr

反转范围元素顺序

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

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

在文件 shift.hpp711 行定义.

引用了 is_ranges_bid_iter_v, is_ranges_rnd_iter_v , 以及 iter_swap().

◆ rotate()

template<typename Iterator>
void rotate ( Iterator first,
Iterator middle,
Iterator last )
constexpr

旋转范围元素

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

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

在文件 shift.hpp837 行定义.

引用了 is_ranges_fwd_iter_v.

◆ rotate_copy()

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

旋转并复制元素

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

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

在文件 shift.hpp859 行定义.

引用了 copy().

◆ shift_left()

template<typename Iterator>
void shift_left ( Iterator first,
Iterator last,
iter_difference_t< Iterator > n )
constexpr

向左移位

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

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

在文件 shift.hpp875 行定义.

引用了 copy(), distance(), end(), initialize(), is_assignable_v, is_ranges_fwd_iter_v, move(), next() , 以及 prev().

◆ shift_right()

template<typename Iterator>
void shift_right ( Iterator first,
Iterator last,
iter_difference_t< Iterator > n )
constexpr

向右移位

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

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

在文件 shift.hpp909 行定义.

引用了 distance(), end(), initialize(), is_assignable_v, is_ranges_bid_iter_v, move(), move_backward(), next() , 以及 prev().

◆ swap_ranges()

template<typename Iterator1, typename Iterator2>
Iterator2 swap_ranges ( Iterator1 first1,
Iterator1 last1,
Iterator2 first2 )
constexpr

交换两个范围的元素

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

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

在文件 shift.hpp458 行定义.

引用了 iter_swap().

◆ transform() [1/2]

template<typename Iterator1, typename Iterator2, typename UnaryOperation>
Iterator2 transform ( Iterator1 first,
Iterator1 last,
Iterator2 result,
UnaryOperation op )
constexprnoexcept

对范围元素应用一元变换

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

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

在文件 shift.hpp946 行定义.

引用了 is_assignable_v, is_invocable_v , 以及 is_ranges_fwd_iter_v.

◆ transform() [2/2]

template<typename Iterator1, typename Iterator2, typename Iterator3, typename BinaryOperation>
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.hpp978 行定义.

引用了 is_assignable_v, is_invocable_v , 以及 is_ranges_fwd_iter_v.

◆ unique() [1/2]

template<typename Iterator>
Iterator unique ( Iterator first,
Iterator last )
constexpr

移除连续重复元素

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

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

在文件 shift.hpp1056 行定义.

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

◆ unique() [2/2]

template<typename Iterator, typename BinaryPredicate>
Iterator unique ( Iterator first,
Iterator last,
BinaryPredicate binary_pred )
constexpr

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

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

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

在文件 shift.hpp1073 行定义.

引用了 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.hpp1042 行定义.

引用了 unique_copy().

◆ unique_copy() [2/2]

template<typename Iterator1, typename Iterator2, typename BinaryPredicate>
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.hpp1012 行定义.

引用了 is_invocable_v , 以及 is_ranges_fwd_iter_v.

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