std::move in C++
std :: move
Moves the elements in the range [first,last] into the range beginning at the result. The value of the elements in the [first,last] is transferred to the elements pointed out by the result. After the call, the elements in the range [first,last] are left in an unspecified but valid state.
Template :
OutputIterator move (InputIterator first, InputIterator last, OutputIterator result); Parameters : the first, last Input iterators to the initial and final positions in a sequence to be moved. The range used is [first,last], which contains all the elements between first and last, including the element pointed by first but not the element pointed by last. result Output iterator to the initial position in the destination sequence. This shall not point to any element in the range [first,last]. Return type : An iterator to the end of the destination range where elements have been moved.
Examples:
Input : vec1 contains : 1 2 3 4 5 vec2 contains : 7 7 7 7 7 Output : arr2 contains : 7 1 2 3 4 /*First 4 elements of vector vec1 moved to vec2 starting second position*/
CPP
// 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 << "\n" ; // Print elements std :: cout << "Vector2 contains :" ; for (unsigned int i = 0; i < vec2.size(); i++) std :: cout << " " << vec2[i]; std :: cout << "\n\n" ; // 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 << "\n" ; return 0; } |
Output
Vector1 contains : 1 2 3 4 5 Vector2 contains : 7 7 7 7 7 Vector2 contains after std::move function: 7 1 2 3 4
Time Complexity: O(N) (std::move operation itself takes O(1) time )
Auxiliary Space: O(N)
Contact Us