move_iterator 類別
類別樣板 move_iterator
是迭代器的包裝函式。 move_iterator提供與它包裝的反覆運算器相同的行為(stores),不同之處在於它會將預存反覆運算器的取值運算子轉換成右值參考,將複本轉換成移動。 如需有關 rvalue 的詳細資訊,請參閱 Rvalue 參考宣告子:&&。
語法
class move_iterator;
備註
類別範本描述對象的行為與反覆運算器類似,但取值時除外。 它會儲存 Iterator
類型的隨機存取迭代器,此迭代器可透過成員函式 base()
來存取。 move_iterator
的所有作業是直接在預存迭代器上執行,不過,operator*
的結果會隱含轉型為 value_type&&
以建立右值參考。
move_iterator
可能能夠執行未由包裝反覆運算器定義的作業。 不應使用這些作業。
建構函式
建構函式 | 描述 |
---|---|
move_iterator | move_iterator 類型物件的建構函式。 |
Typedefs
類型名稱 | 描述 |
---|---|
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 。 |
需求
Header:<iterator>
命名空間:std
move_iterator::base
傳回此 move_iterator
的預存迭代器。
RandomIterator base() const;
備註
成員函式會傳回儲存的迭代器。
move_iterator::difference_type
型difference_type
別是以move_iterator
typedef
反覆運算器特性difference_type
為基礎,而且可以與其交換使用。
typedef typename iterator_traits<RandomIterator>::difference_type difference_type;
備註
這個類型與迭代器特性 typename iterator_traits<RandomIterator>::pointer
同義。
move_iterator::iterator_category
型iterator_category
別是以move_iterator
typedef
反覆運算器特性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->
如同一般 RandomIterator
operator->
,它可讓您存取屬於目前元素的欄位。
pointer operator->() const;
備註
第一個運算子會傳回 &**this
。
move_iterator::pointer
pointer
類型是以 move_iterator
的隨機迭代器 RandomIterator
為基礎的 typedef
,可交替使用。
typedef RandomIterator pointer;
備註
此類型是 RandomIterator
的同義字。
move_iterator::reference
類型 reference
是一個 typedef
,以 move_iterator
的 value_type&&
為基礎,可與 value_type&&
交替使用。
typedef value_type&& reference;
備註
此類型與 value_type&&
同義,後者是一個 rvalue 參考。
move_iterator::value_type
型value_type
別是以move_iterator
typedef
反覆運算器特性value_type
為基礎,而且可以與其交換使用。
typedef typename iterator_traits<RandomIterator>::value_type value_type;
備註
這個類型與迭代器特性 typename iterator_traits<RandomIterator>::value_type
同義。
另請參閱
<iterator>
Lvalues 和 Rvalues
移動建構函式和移動指派運算子 (C++)
C++ 標準程式庫參考