move_iterator 类

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

template<class Iterator>
    class move_iterator {
public:
    typedef Iterator iterator_type;
    typedef typename    
        iterator_traits<Iterator>::iterator_category
            iterator_category;
    typedef typename iterator_traits<Iterator>::value_type
        value_type;
    typedef typename iterator_traits<Iterator>::difference_type
        difference_type;
    typedef Iterator
        pointer;
    typedef value_type&&
        reference;

    move_iterator();
    explicit move_iterator (Iterator right);
    template<class Type>
        move_iterator (const move_iterator<Type>& right);
    template <class Type> 
        move_iterator& operator=(const move_iterator<Type>& right);

    iterator_type base () const;
    reference operator* () const;
    pointer operator-> () const;

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

    move_iterator& operator+= (difference_type off);
    move_iterator operator+ (difference_type off) const;
    move_iterator& operator-= (difference_type off);
    move_iterator operator- (difference_type off) const;
    reference operator[] (difference_type off) const;
    };

备注

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

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

构造函数

move_iterator

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

Typedef

move_iterator::iterator_type

模板参数 RandomIterator 的同义词。

move_iterator::iterator_category

同一名称的较长 typename 表达式的同义词,iterator_category 用于标识迭代器的常规功能。

move_iterator::value_type

同一名称的较长 typename 表达式的同义词,value_type 用于描述迭代器元素的类型。

move_iterator::difference_type

同一名称的较长 typename 表达式的同义词,difference_type 用于描述表示元素间的差值所需的整型。

move_iterator::pointer

模板参数 RandomIterator 的同义词。

move_iterator::reference

rvalue 引用 value_type&& 的同义词。

成员函数

move_iterator::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

请参见

任务

如何:编写移动构造函数

参考

<iterator>

Lvalues 和 Rvalues

标准模板库