Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Шаблон класса move_iterator является программой-оболочкой для итератора. Move_iterator обеспечивает то же поведение, что итератор, который он упаковывает (хранит), за исключением того, что оператор деиферации хранимого итератора преобразуется в ссылку rvalue, превращая копию в перемещение. Дополнительные сведения о rvalues см. в разделе Оператор объявления ссылки Rvalue: &&.
Синтаксис
class move_iterator;
Замечания
Шаблон класса описывает объект, который ведет себя как итератор, за исключением случаев разыменования. Он хранит итератор произвольного доступа типа Iterator, доступный посредством функции-члена base(). Все операции с итератором move_iterator выполняются непосредственно в сохраненном итераторе, за исключением того, что результат operator* явным образом приводится к value_type&& для создания ссылки rvalue.
Может move_iterator быть способен выполнять операции, которые не определены оболочкой итератора. Эти операции не следует использовать.
Конструкторы
| Конструктор | Description |
|---|---|
| move_iterator | Конструктор для объектов типа move_iterator. |
Определения типов
| Введите имя | Description |
|---|---|
| iterator_type | Синоним параметра шаблона RandomIterator. |
| iterator_category | Синоним более длинного выражения typename с таким же именем, iterator_category определяет общие возможности данного итератора. |
| value_type | Синоним более длинного выражения typename с таким же именем, value_type описывает тип элементов итератора. |
| difference_type | Синоним более длинного выражения typename с таким же именем, difference_type описывает целочисленный тип, необходимый для выражения разницы между элементами. |
| pointer | Синоним параметра шаблона RandomIterator. |
| reference | Синоним ссылки rvaluevalue_type&&. |
Функции элементов
| Функция-член | Description |
|---|---|
| base | Функция-член возвращает сохраненный итератор, инкапсулированный данным итератором move_iterator. |
Операторы
| Operator | Description |
|---|---|
| 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. |
Требования
Заголовок:<итератор>
Пространство имен: 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 основан на параметре шаблона RandomIterator для шаблона класса move_iterator и может использоваться вместо него.
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 в сохраненный итератор. Затем возвращает *this.
move_iterator::operator-=
Выполняет переход через заданное число предыдущих элементов. Этот оператор вычитает смещение из сохраненного итератора.
move_iterator& operator-=(difference_type _Off);
Параметры
Замечания
Оператор вычисляет *this += -_Off. Затем возвращает *this.
move_iterator::operator++
Увеличивает сохраненный итератор, принадлежащий этому move_iterator. К текущему элементу обращается оператор postincrement. Доступ к следующему элементу осуществляется префиксным оператором.
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 — это typedef, основанный на произвольном итераторе RandomIterator для move_iterator, и может использоваться с ним взаимозаменяемым образом.
typedef RandomIterator pointer;
Замечания
Тип является синонимом RandomIterator.
move_iterator::reference
Тип reference — typedef на основе value_type&& для move_iterator, его можно использовать вместо 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++