Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Шаблон класса 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++