std::move
將[first,last]範圍內的元素移到從結果開始的範圍內。
[first,last]中元素的值將傳輸到結果所指向的元素。調用之後,[first,last]範圍內的元素處於未指定但有效的狀態。
模板:
OutputIterator move (InputIterator first, InputIterator last, OutputIterator result); 參數: 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]. 返回類型: An iterator to the end of the destination range where elements have been moved.
例子:
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 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;
}
輸出:
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
相關用法
注:本文由純淨天空篩選整理自 std::move in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。