move_iterator 类

类模板 move_iterator 是迭代器的包装器。 move_iterator 的行为与其包装(存储)的迭代器相同,但它将存储的迭代器的取消引用运算符转换为 rvalue 引用,将副本转换为移动。 有关详细信息,请参阅右值引用声明符:&&

语法

class move_iterator;

备注

此类模板描述在行为上与迭代器类似(取消引用时除外)的对象。 它存储 Iterator 类型的随机访问迭代器,可通过成员函数 base() 访问此迭代器。 对于 move_iterator 的所有操作将直接对存储的迭代器执行,但 operator* 的结果将隐式强制转换为 value_type&& 以进行右值引用。

move_iterator 可以进行包装的迭代器未定义的操作。 不应使用这些操作。

构造函数

构造函数 说明
move_iterator move_iterator 类型的对象的构造函数。

Typedef

类型名称 说明
iterator_type 模板参数 RandomIterator 的同义词。
iterator_category 同一名称的较长 typename 表达式的同义词,iterator_category 用于标识迭代器的常规功能。
value_type 同一名称的较长 typename 表达式的同义词,value_type 用于描述迭代器元素的类型。
difference_type 同一名称的较长 typename 表达式的同义词,difference_type 用于描述表示元素间的差值所需的整型。
pointer 模板参数 RandomIterator 的同义词。
reference rvalue 引用 value_type&& 的同义词。

成员函数

成员函数 说明
base 此成员函数返回该 move_iterator 包装的存储迭代器。

运算符

运算符 说明
move_iterator::operator* 返回 (reference)*base()
move_iterator::operator++ 递增存储的迭代器。 确切行为取决于它是前置递增操作还是后置递增操作。
move_iterator::operator-- 递减存储的迭代器。 确切行为取决于它是前置递减操作还是后置递减操作。
move_iterator::operator-> 返回 &**this
move_iterator::operator- 通过先从当前位置减去右值来返回 move_iterator(*this) -=
move_iterator::operator[] 返回 (reference)*(*this + off)。 允许你指定相对于当前基础位置的偏移量以获取位于偏移位置的值。
move_iterator::operator+ 返回 move_iterator(*this) +=值。 允许你向基础位置添加偏移量以获取位于偏移位置的值。
move_iterator::operator+= 将右值添加到存储的迭代器,并返回 *this
move_iterator::operator-= 从存储的迭代器减去右值,并返回 *this

要求

标头:<iterator>

命名空间: std

move_iterator::base

返回此 move_iterator 存储的迭代器。

RandomIterator base() const;

备注

成员函数将返回存储的迭代器。

move_iterator::difference_type

该类型difference_type是基于move_iteratortypedef迭代器特征difference_type的,可以与其互换使用。

typedef typename iterator_traits<RandomIterator>::difference_type difference_type;

备注

该类型是迭代器特征 typename iterator_traits<RandomIterator>::pointer 的同义词。

move_iterator::iterator_category

该类型iterator_category是基于move_iteratortypedef迭代器特征iterator_category的,可以与其互换使用。

typedef typename iterator_traits<RandomIterator>::iterator_category  iterator_category;

备注

该类型是迭代器特征 typename iterator_traits<RandomIterator>::iterator_category 的同义词。

move_iterator::iterator_type

类型 iterator_type 基于类模板 move_iterator 的模板参数 RandomIterator,并且可在其位置互换使用。

typedef RandomIterator iterator_type;

注解

该类型是模板参数 RandomIterator 的同义词。

move_iterator::move_iterator

构造一个移动迭代器。 使用参数作为存储的迭代器。

move_iterator();
explicit move_iterator(RandomIterator right);
template <class Type>
move_iterator(const move_iterator<Type>& right);

参数

right
将用作存储的迭代器的迭代器。

备注

第一个构造函数用其默认构造函数初始化存储的迭代器。 剩余构造函数用 base.base() 初始化存储的迭代器。

move_iterator::operator+=

将某一偏移量添加到存储迭代器,以便存储迭代器指向新的当前位置处的元素。 然后,运算符移动新的当前元素。

move_iterator& operator+=(difference_type _Off);

参数

_Off
将偏移量添加到当前位置,以确定新的当前位置。

返回值

返回新的当前元素。

注解

运算符将向存储迭代器添加 _Off。 然后返回 *this

move_iterator::operator-=

在前面的指定数目的元素之间移动。 此运算符会从存储的迭代器中减去一个偏移量。

move_iterator& operator-=(difference_type _Off);

参数

注解

运算符计算 *this += -_Off。 然后返回 *this

move_iterator::operator++

递增属于此 move_iterator 的存储迭代器。 当前元素通过后置递增运算符进行访问。 下一个元素通过前置递增运算符进行访问。

move_iterator& operator++();
move_iterator operator++(int);

参数

注解

第一个(前置递增)运算符将递增存储迭代器。 然后返回 *this

第二个(后置递增)运算符生成 *this 的副本,并计算 ++*this。 然后返回该副本。

move_iterator::operator+

返回由任意数量的元素提升的迭代器位置。

move_iterator operator+(difference_type _Off) const;

参数

备注

运算符返回 move_iterator(*this) += _Off

move_iterator::operator[]

允许数组索引对 move iterator 范围内的元素进行访问。

reference operator[](difference_type _Off) const;

参数

备注

运算符返回 (reference)*(*this + _Off)

move_iterator::operator--

前置减量和后置减量成员运算符对存储的迭代器执行减量运算。

move_iterator& operator--();
move_iterator operator--();

参数

备注

第一个成员运算符(前置减量)对存储的迭代器执行减量运算。 然后返回 *this

第二个(后置减量)运算符生成 *this 的副本,并计算 --*this 的结果。 然后返回该副本。

move_iterator::operator-

递减存储的迭代器,并返回指示的值。

move_iterator operator-(difference_type _Off) const;

参数

备注

运算符返回 move_iterator(*this) -= _Off

move_iterator::operator*

取消对存储的迭代器的引用,并返回值。 此行为类似 rvalue reference 并执行移动赋值。 该运算符会将当前元素从基迭代器中传输出去。 其后面的元素将成为新的当前元素。

reference operator*() const;

备注

运算符返回 (reference)*base()

move_iterator::operator->

与普通RandomIteratoroperator->元素一样,它提供对属于当前元素的字段的访问权限。

pointer operator->() const;

注解

运算符返回 &**this

move_iterator::pointer

类型 pointer 是基于 move_iterator 的随机迭代器 RandomIteratortypedef,可互换使用。

typedef RandomIterator  pointer;

注解

类型是 RandomIterator 的同义词。

move_iterator::reference

reference 类是基于 move_iteratorvalue_type&&typedef,可与 value_type&& 交换使用。

typedef value_type&& reference;

注解

类是 value_type&& 的同义词,即右值引用。

move_iterator::value_type

该类型value_type是基于move_iteratortypedef迭代器特征value_type的,可以与其互换使用。

typedef typename iterator_traits<RandomIterator>::value_type   value_type;

备注

该类型是迭代器特征 typename iterator_traits<RandomIterator>::value_type 的同义词。

另请参阅

<iterator>
左值和右值
移动构造函数和移动赋值运算符 (C++)
C++ 标准库参考