std::move_iterator
Материал из cppreference.com
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
Определено в заголовочном файле <iterator>
|
||
template <class Iterator> class move_iterator |
(начиная с C++11) | |
std::move_iterator
это итератор, адаптер, который ведет себя так же, как основной итератор (которая должна быть по крайней мере InputIterator
), кроме того, что разыменование преобразует значение возвращается основных итераторов в RValue. Если это итератор используется как итератор ввода, эффект является то, что значения переехали из, а не скопированные из.Оригинал:
std::move_iterator
is an iterator adaptor which behaves exactly like the underlying iterator (which must be at least an InputIterator
), except that dereferencing converts the value returned by the underlying iterator into an rvalue. If this iterator is used as an input iterator, the effect is that the values are moved from, rather than copied from.Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править] Типы-члены
Тип члена | Определение |
iterator_type
|
Iterator
|
difference_type
|
std::iterator_traits<Iterator>::difference_type |
pointer
|
Iterator
|
value_type
|
std::iterator_traits<Iterator>::value_type |
iterator_category
|
std::iterator_traits<Iterator>::iterator_category |
reference
|
value_type&&
|
[править] Функции-члены
создает новый адаптер итератора Оригинал: constructs a new iterator adaptor Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
назначает другого итератора Оригинал: assigns another iterator Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
доступ к основной итератор Оригинал: accesses the underlying iterator Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (public функция-элемент) | |
(C++11)(C++11)(устарело в C++20) |
получает доступ к элементу по указателю (public функция-элемент) |
(C++11) |
обращается к элементу по индексу (public функция-элемент) |
увеличивает или уменьшает итератор (public функция-элемент) |
[править] Функции, не являющиеся членами
(C++11)(C++11)(удалено в C++20)(C++11)(C++11)(C++11)(C++11)(C++20) |
сравнивает базовые итераторы (шаблон функции) |
перемещает итератор Оригинал: advances the iterator Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) | |
вычисляет расстояние между двумя адаптерами итераторов Оригинал: computes the distance between two iterator adaptors Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. (шаблон функции) |
[править] Пример
Запустить этот код
#include <iostream> #include <algorithm> #include <vector> #include <iterator> #include <numeric> int main() { std::vector<std::string> v{"this", "is", "an", "example"}; std::cout << "Old contents of the vector: "; for(auto& s : v) std::cout << '"' << s << "\" "; typedef std::vector<std::string>::iterator iter_t; std::string concat = std::accumulate( std::move_iterator<iter_t>(v.begin()), std::move_iterator<iter_t>(v.end()), std::string()); // Can be simplified with std::make_move_iterator std::cout << "\nConcatenated as string: " << concat << '\n' << "New contents of the vector: "; for(auto& s : v) std::cout << '"' << s << "\" "; std::cout << '\n'; }
Вывод:
Old contents of the vector: "this" "is" "an" "example" Concatenated as string: thisisanexample New contents of the vector: "" "" "" ""
[править] См. также
(C++11) |
создаёт std::move_iterator типа, выведенного из аргумента (шаблон функции) |