C++ 算法 move()函数
C++ 算法 move() 函数用于移动元素。它接受三个参数,并将属于范围[first,last)
的元素移动到以 ‘result’ 开头的范围中。
语法
template<class InputIterator, class OutputIterator> OutputIterator move(InputIterator first, InputIterator last, OutputIterator result);
参数
first :它是范围的第一个元素的输入迭代器,其中元素本身包含在范围内。
last :它是范围的最后一个元素的输入迭代器,其中元素本身不包含在范围内。
result :它是移动元素的起始位置的输出迭代器。
返回值
该函数返回一个指向移动元素序列的第一个元素的迭代器。
示例1
#include <iostream>
#include <algorithm>
#include <utility>
#include <vector>
#include <string>
int main ()
{
std::vector<std::string> a = {"suraj","aman","vanshika","chhavi"};
std::vector<std::string> b (4);
std::cout << "Move function.\n";
std::move ( a.begin(), a.begin()+4, b.begin() );
std::cout << "a contains " << a.size() << " elements:";
std::cout << " (The state of which is valid.)";
std::cout << '\n';
std::cout << "b contains " << b.size() << " elements:";
for (std::string& x: b) std::cout << " [" << x << "]";
std::cout << '\n';
std::cout << "Moving the conatiner a...\n";
a = std::move (b);
std::cout << "a contains " << a.size() << " elements:";
for (std::string& x: a) std::cout << " [" << x << "]";
std::cout << '\n';
std::cout << "b is in valid state";
std::cout << '\n';
return 0;
}
输出:
Move function.
a contains 4 elements: (The state of which is valid.)
b contains 4 elements: [suraj] [aman] [vanshika] [chhavi]
Moving the conatiner a...
a contains 4 elements: [suraj] [aman] [vanshika] [chhavi]
b is in valid state
示例2
#include<bits/stdc++.h>
int main()
{
std :: vector <int> u1 {9, 14, 21, 18};
std :: vector <int> u2 {14, 14, 14, 14};
std :: cout << "u1 contains :";
for(int j = 0; j < u1.size(); j++)
std :: cout << " " << u1[j];
std :: cout << "\n";
std :: cout << "u2 contains :";
for(unsigned int j = 0; j < u2.size(); j++)
std :: cout << " " << u2[j];
std :: cout << "\n\n";
std :: move (u1.begin(), u1.begin() + 4, u2.begin() + 1);
std :: cout << "u2 contains after move function:";
for(unsigned int j = 0; j < u2.size(); j++)
std :: cout << " " << u2[j];
std :: cout << "\n";
return 0;
}
输出:
u1 contains : 9 14 21 18
u2 contains : 14 14 14 14
u2 contains after move function: 14 9 14 21
复杂性
从第一个元素到最后一个元素,该函数的复杂性是线性的。
数据竞争
访问一些或所有的容器对象。
异常
如果容器中的任何元素抛出异常,该函数将抛出异常。