STL 中的 move() 函数将它的前两个输入迭代器参数指定的序列移到第三个参数定义的目的序列的开始位置,第三个参数必须是输出迭代器。这个算法返回的迭代器指向最后一个被移动到目的序列的元素的下一个位置。
这是一个移动操作,因此无法保证在进行这个操作之后,输入序列仍然保持不变;源元素仍然会存在,但它们的值可能不再相同了,因此在移动之后,就不应该再使用它们。如果源序列可以被替换或破坏,就可以选择使用 move() 算法。如果不想扰乱源序列,可以使用 copy() 算法。
使用 STL move 函数移动元素
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <vector>
using namespace std;
int main()
{
std::cout << "嗨客网(www.haicoder.net)\n" << std::endl;
string st = "I love haicoder";
vector<string> vc ;
vc.push_back(move(st));
cout << vc[0] << endl;
if (!st.empty())
{
cout << st << endl;
}
return 0;
}
我们在 Linux 下使用 g++ 进行编译,具体命令如下:
g++ move.cpp -std=c++11
编译后,我们直接运行生成的二进制文件 a.out
,如下图所示:
我们使用了 move 函数,实现了集合中元素的移动。
STL 中的 move() 函数将它的前两个输入迭代器参数指定的序列移到第三个参数定义的目的序列的开始位置,第三个参数必须是输出迭代器。这个算法返回的迭代器指向最后一个被移动到目的序列的元素的下一个位置。