std :: move в C ++

Опубликовано: 31 Декабря, 2021

std :: move
Перемещает элементы из диапазона [first, last] в диапазон, начинающийся с result.
Значение элементов в [first, last] передается элементам, указанным в result. После вызова элементы в диапазоне [первый, последний] остаются в неопределенном, но допустимом состоянии.
Шаблон :

Перемещение OutputIterator (сначала InputIterator, последним InputIterator, результат OutputIterator);

Параметры:

первый Последний
Введите итераторы в начальную и конечную позиции в последовательности
быть перемещенным. Используемый диапазон - [первый, последний], который содержит все
элементы между первым и последним, включая указанный элемент
первым, но не элементом, на который указывает последний.

результат
Вывести итератор в начальную позицию в целевой последовательности.
Это не должно указывать на какой-либо элемент в диапазоне [первый, последний].

Тип возврата:
Итератор до конца целевого диапазона, в который были перемещены элементы.

Примеры:

Вход :
vec1 содержит: 1 2 3 4 5
vec2 содержит: 7 7 7 7 7
Выход :
arr2 содержит: 7 1 2 3 4
/ * Первые 4 элемента вектора vec1 перемещены в начальную вторую позицию vec2 * /
// CPP program to illustrate
// std::move and std::move_backward
// STL library functions
#include<bits/stdc++.h>
// Driver code
int main()
{
std :: vector < int > vec1 {1, 2, 3, 4, 5};
std :: vector < int > vec2 {7, 7, 7, 7, 7};
// Print elements
std :: cout << "Vector1 contains :" ;
for ( int i = 0; i < vec1.size(); i++)
std :: cout << " " << vec1[i];
std :: cout << " " ;
// Print elements
std :: cout << "Vector2 contains :" ;
for (unsigned int i = 0; i < vec2.size(); i++)
std :: cout << " " << vec2[i];
std :: cout << " " ;
// std :: move function
// move first 4 element from vec1 to starting position of vec2
std :: move (vec1.begin(), vec1.begin() + 4, vec2.begin() + 1);
// Print elements
std :: cout << "Vector2 contains after std::move function:" ;
for (unsigned int i = 0; i < vec2.size(); i++)
std :: cout << " " << vec2[i];
std :: cout << " " ;
return 0;
}

Выход:

Vector1 содержит: 1 2 3 4 5
Vector2 содержит: 7 7 7 7 7

Vector2 содержит после функции std :: move: 7 1 2 3 4

Эта статья предоставлена Сачином Биштом . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .



C++