MSTL 1.4.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
迭代器操作

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

函数

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

详细描述

迭代器操作函数的实现

函数说明

◆ advance()

template<typename Iterator, typename Distance, enable_if_t< is_iter_v< Iterator >, int > = 0>
void advance ( Iterator & i,
Distance n )
constexpr

将迭代器前进指定距离

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

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

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

在文件 iterator.hpp90 行定义.

引用了 _INNER, is_bid_iter_v , 以及 is_rnd_iter_v.

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

◆ distance()

template<typename Iterator, enable_if_t< is_iter_v< Iterator >, int > = 0>
iter_difference_t< Iterator > distance ( Iterator first,
Iterator last )
constexpr

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

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

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

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

在文件 iterator.hpp170 行定义.

引用了 _INNER , 以及 is_rnd_iter_v.

被这些函数引用 equal_range(), find_end(), inplace_merge(), is_permutation(), lower_bound(), merge_sort(), reduce(), search(), shift_left(), shift_right(), shuffle(), temporary_buffer< Iterator >::temporary_buffer(), transform_reduce() , 以及 upper_bound().

◆ next()

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

获取迭代器的后一个位置

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

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

在文件 iterator.hpp134 行定义.

引用了 _MSTL , 以及 advance().

被这些函数引用 adjacent_find(), is_sorted(), is_sorted_until(), lock_free_queue< T >::pop(), reduce(), remove(), remove_if(), shift_left(), shift_right(), shuffle(), shuffle(), transform_reduce() , 以及 lock_free_queue< T >::try_pop().

◆ prev()

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

获取迭代器的前一个位置

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

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

在文件 iterator.hpp118 行定义.

引用了 _MSTL , 以及 advance().

被这些函数引用 shift_left() , 以及 shift_right().

◆ to_pointer()

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

将迭代器转换为原始指针

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

在文件 iterator.hpp43 行定义.

引用了 _INNER.