move_iterator Class

选件类模板 move_iterator 是迭代器的包装。 move_iterator提供与迭代器它所包装的行为(存储),除此之外,将存储的迭代器的取消引用运算符更改为rvalue引用,将复制变成移动。 有关rvalues的更多信息,请参见 Rvalue引用声明:&&

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&& 进行rvalue引用。

move_iterator 可能尚未定义的被包装的迭代器的能够操作上。 不应使用这些操作。

Ee428021.collapse_all(zh-cn,VS.110).gif构造函数

move_iterator

类型 move_iterator对象的构造函数。

Ee428021.collapse_all(zh-cn,VS.110).gifTypedef

move_iterator::iterator_type

模板参数的 RandomIterator同义词。

move_iterator::iterator_category

相同的名称,iterator_category 的较长 typename 表达式的同义词标识迭代器的泛型功能。

move_iterator::value_type

相同的名称,value_type 的较长 typename 表达式的同义词描述何种类型迭代器元素是。

move_iterator::difference_type

相同的名称,difference_type 的较长 typename 表达式的同义词描述所需的整数类型表示中的元素之间的差异值。

move_iterator::pointer

模板参数的 RandomIterator同义词。

move_iterator::reference

rvalue 的同义词引用 value_type&&。

Ee428021.collapse_all(zh-cn,VS.110).gif成员函数

move_iterator::base

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

Ee428021.collapse_all(zh-cn,VS.110).gif运算符

move_iterator::operator*

返回 (reference)*base().

move_iterator::operator++

增加单元的迭代器。 确切的行为取决于它是否是preincrement或postincrement操作。

move_iterator::operator--

递减存储的迭代器。 确切的行为取决于它是否是predecrement或postdecrement操作。

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

请参见

任务

如何:编写一个移动构造函数

参考

Lvalue和Rvalues

标准模板库