boost::move_iterator
// In header: <boost/move/iterator.hpp> template<typename It> class move_iterator { public: // types typedef It iterator_type; typedef boost::movelib::iterator_traits< iterator_type >::value_type value_type; typedef value_type && reference; typedef It pointer; typedef boost::movelib::iterator_traits< iterator_type >::difference_type difference_type; typedef boost::movelib::iterator_traits< iterator_type >::iterator_category iterator_category; // public member functions move_iterator(); explicit move_iterator(const It &); template<typename U> move_iterator(const move_iterator< U > &); reference operator*() const; pointer operator->() const; move_iterator & operator++(); move_iterator< iterator_type > operator++(int); move_iterator & operator--(); move_iterator< iterator_type > operator--(int); move_iterator< iterator_type > operator+(difference_type) const; move_iterator & operator+=(difference_type); move_iterator< iterator_type > operator-(difference_type) const; move_iterator & operator-=(difference_type); reference operator[](difference_type) const; };
类模板 move_iterator 是一个迭代器适配器,其行为与底层迭代器相同,但其解引用运算符会将底层迭代器解引用运算符返回的值隐式转换为右值引用。 可以使用移动迭代器调用某些泛型算法,以用移动代替复制。
move_iterator
公有成员函数move_iterator();
explicit move_iterator(const It & i);
template<typename U> move_iterator(const move_iterator< U > & u);
reference operator*() const;
pointer operator->() const;
move_iterator & operator++();
move_iterator< iterator_type > operator++(int);
move_iterator & operator--();
move_iterator< iterator_type > operator--(int);
move_iterator< iterator_type > operator+(difference_type n) const;
move_iterator & operator+=(difference_type n);
move_iterator< iterator_type > operator-(difference_type n) const;
move_iterator & operator-=(difference_type n);
reference operator[](difference_type n) const;