NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
迭代器操作

迭代器操作函数的实现 更多...

函数

template<typename Iterator>
constexpr iter_pointer_t< Iterator > neforce::to_pointer (Iterator iter)
 将迭代器转换为原始指针
template<typename Iterator, typename Distance>
constexpr void neforce::advance (Iterator &i, Distance n)
 将迭代器前进指定距离
template<typename Iterator>
constexpr Iterator neforce::prev (Iterator iter, iter_difference_t< Iterator > n=1)
 获取迭代器的前一个位置
template<typename Iterator>
constexpr Iterator neforce::next (Iterator iter, iter_difference_t< Iterator > n=1)
 获取迭代器的后一个位置
template<typename Iterator>
constexpr iter_difference_t< Iterator > neforce::distance (Iterator first, Iterator last)
 计算两个迭代器之间的距离

详细描述

迭代器操作函数的实现

函数说明

◆ advance()

template<typename Iterator, typename Distance>
void neforce::advance ( Iterator & i,
Distance n )
constexpr

将迭代器前进指定距离

模板参数
Iterator迭代器类型
Distance距离类型
参数
i迭代器引用
n前进距离

根据迭代器类型使用不同的前进策略:

  • 随机访问迭代器:直接使用 += 操作
  • 双向迭代器:支持正负距离
  • 前向迭代器:只支持非负距离

在文件 iterator.hpp106 行定义.

引用了 advance(), is_arithmetic_v, is_bid_iter_v, is_iter_v, is_rnd_iter_v , 以及 is_signed_v.

被这些函数引用 advance(), find_end(), lower_bound(), next(), prev() , 以及 upper_bound().

◆ distance()

template<typename Iterator>
iter_difference_t< Iterator > neforce::distance ( Iterator first,
Iterator last )
constexpr

计算两个迭代器之间的距离

模板参数
Iterator迭代器类型
参数
first起始迭代器
last结束迭代器
返回
两个迭代器之间的距离

根据迭代器类型使用不同的计算策略:

  • 随机访问迭代器:直接使用减法
  • 其他迭代器:遍历计数

在文件 iterator.hpp201 行定义.

引用了 distance(), is_iter_v , 以及 is_ranges_rnd_iter_v.

被这些函数引用 neforce::basic_string< char >::append(), neforce::basic_string_view< typename Traits::char_type, Traits >::basic_string_view(), neforce::lz4_compressor::compress(), neforce::zlib_compressor::compress(), neforce::rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::count(), neforce::lz4_compressor::decompress(), neforce::zlib_compressor::decompress(), distance(), neforce::rb_tree< Key, pair< const Key, T >, select1st< pair< const Key, T > >, Compare, Alloc >::erase(), neforce::vector< Value, Alloc >::erase(), neforce::memory_view< char >::explicit(), find_end(), inplace_merge(), neforce::basic_string< char >::insert(), neforce::bitmap::insert(), neforce::flat_hashtable< pair< Key, T >, Key, HashFcn, select1st< pair< Key, T > >, EqualKey, Alloc >::insert_equal(), neforce::flat_hashtable< pair< Key, T >, Key, HashFcn, select1st< pair< Key, T > >, EqualKey, Alloc >::insert_unique(), lower_bound(), make_leonardo_heap(), merge_sort(), pop_leonardo_heap(), push_leonardo_heap(), reduce(), rotate(), search(), neforce::file::seek(), shell_sort(), shift_left(), shift_right(), shuffle(), sort_leonardo_heap(), neforce::temporary_buffer< Iterator >::temporary_buffer(), tim_sort(), transform_reduce() , 以及 upper_bound().

◆ next()

template<typename Iterator>
Iterator neforce::next ( Iterator iter,
iter_difference_t< Iterator > n = 1 )
constexpr

获取迭代器的后一个位置

模板参数
Iterator迭代器类型
参数
iter当前迭代器
n前进距离,默认为1
返回
前进n个位置后的迭代器

将迭代器前进n个位置,n必须为非负数。

在文件 iterator.hpp157 行定义.

引用了 advance() , 以及 next().

被这些函数引用 adjacent_find(), bubble_sort(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::clear(), neforce::retire_list::clear(), neforce::tui::screen::clear(), cocktail_sort(), neforce::deque< T, Alloc, BufSize >::erase(), neforce::flat_hashtable< pair< Key, T >, Key, HashFcn, select1st< pair< Key, T > >, EqualKey, Alloc >::erase(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::erase(), neforce::http::http_filter_chain::execute_post_filters_async(), neforce::http::http_filter_chain::execute_pre_filters_async(), neforce::list< pair< Key, Value > >::insert(), neforce::list< pair< Key, Value > >::insert(), is_sorted(), is_sorted_until(), minmax_element(), next(), neforce::http::async_filter::post_filter_async(), neforce::http::async_filter::pre_filter_async(), reduce(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::rehash(), rotate(), shift_left(), shift_right(), shuffle(), shuffle(), tim_sort(), transform_reduce(), neforce::list< pair< Key, Value > >::unique_if(), neforce::vector< Value, Alloc >::vector(), neforce::hazard_pointer_domain::~hazard_pointer_domain() , 以及 neforce::lock_free_queue< T >::~lock_free_queue().

◆ prev()

template<typename Iterator>
Iterator neforce::prev ( Iterator iter,
iter_difference_t< Iterator > n = 1 )
constexpr

获取迭代器的前一个位置

模板参数
Iterator迭代器类型
参数
iter当前迭代器
n后退距离,默认为1
返回
后退n个位置后的迭代器

将迭代器后退n个位置,n必须为非负数。

在文件 iterator.hpp141 行定义.

引用了 advance() , 以及 prev().

被这些函数引用 neforce::tui::screen::clear(), cocktail_sort(), cube_root(), neforce::hashtable< pair< const Key, T >, Key, HashFcn, select1st< pair< const Key, T > >, EqualKey, Alloc >::erase(), neforce::deque< T, Alloc, BufSize >::insert(), neforce::deque< T, Alloc, BufSize >::insert(), prev(), neforce::list< pair< Key, Value > >::sort_if(), square_root(), neforce::tui::screen::to_string() , 以及 neforce::lock_free_queue< T >::~lock_free_queue().

◆ to_pointer()

template<typename Iterator>
iter_pointer_t< Iterator > neforce::to_pointer ( Iterator iter)
constexpr

将迭代器转换为原始指针

模板参数
Iterator迭代器类型
参数
iter迭代器
返回
原始指针

在文件 iterator.hpp47 行定义.

引用了 is_pointer_v , 以及 to_pointer().

被这些函数引用 to_pointer().