就像许多其他的C++函数一样,std::move()函数的功能也很独特。顾名思义,它被用来将一个变量的值移动到另一个变量,同时删除第一个变量的值。它可以和向量库的push_back()函数一起使用,也可以不使用。那么,让我们开始这篇文章,看看它是否有效。请创建一个新的C++文件并打开它。

例子1:
让我们从第一个例子开始。这段代码的主要头文件已经添加完毕,即iostream、vector、string和utility。我们需要添加标准命名空间 "std"。因此,两个字符串类型的变量s1和s2在main()函数中被初始化。这里有一个字符串类型的向量型迭代器 "v"。迭代器 "v "对象被用来对s1应用push_back()函数。这意味着变量s1的值已经被推到了向量的最后位置。由于向量是空的,它将被首先插入。这里出现了 "std::move()",让我们不要创建另一个向量对象来给它加值。所以,push_back()函数使用了 "std::move() "函数,将s2字符串移动到向量 "v "的最后位置。cout语句是为了让我们知道结果的向量。利用 "for "循环从向量中获取数值作为一个列表,并通过 "cout "子句在终端显示它们。代码在此结束。保存它并关闭文件以继续前进。
include<utility>
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int main() {
string s1 = "Hello";
string s2 = "World";
vector<string>v;
v.push_back(s1);
v.push_back(std::move(s2));
cout << "Overall Vector:";
for (string& x:v)
cout << ' ' << x << '\n';
return 0;
}

代码必须在其执行前进行编译,以解决任何错误。因此,到目前为止,已经利用了g++编译器。这里的"./a.out "永恒指令是为了执行我们的C++代码。你可以看到,结果显示了两个字符串的向量。

例2:
让我们来看看另一个以最简单的方式在C++中使用std::move()的例子。这段代码从相同的头文件库开始,即iostream、vector、string和utility。之后,标准的 "std "命名空间是必要的,以避免在代码中反复使用 "std "关键字。main()函数是以初始化一个字符串变量 "s "来启动的,其值为一个字符串。字符串类型的向量 "vec "被声明为空。由于只有一个字符串,结果向量将由这个单一的变量构成。因此,使用向量对象 "vec "调用push_back()函数。这个函数将字符串
"s "复制到向量 "vec "的最后位置。它并没有删除 "s "变量的值。在使用push_back()函数后,cout语句在shell上显示了字符串 "s "的值。同样,利用 "push_back() "方法中的 "move "函数,将相同的值移动到向量的最后一个位置。cout语句将显示使用 "move "方法后的 "s "的值。最后,利用cout语句在shell上显示结果的向量 "vec "值。
#include<iostream>
#include<vector>
#include<string>
#include<utility>
using namespace std;
int main() {
string s = "Linux";
vector<string>vec;
vec.push_back(s);
cout << "After Copy String: " << s << endl;
vec.push_back(move(s));
cout << "After Move String: " << s << endl;
cout<<"Vector Elements: {"<<vec[0]<<", "<<vec[1]<<"}"<<endl;
return 0; }

该代码已被执行。首先,它显示了将 "s "复制到向量 "vec "中后的值。在使用move()后,"s "变量为空。最后,显示了向量的值。
例子3:
让我们来看看move()的最后一个例子,但不是最不重要的。一个单一的库和标准命名空间被包括在内。main()函数开始时初始化了两个整数类型的向量,v1和v2,有一定的范围。第一个cout语句显示我们将显示第一个向量v1的值。"for "循环在这里通过使用其中的 "size "函数,从起始位置到结束,对第一个向量v1的值进行迭代。在每一次迭代中,它都会显示向量的每个值。对向量v2也是如此,通过 "for "循环显示其整数值。
std::move()函数利用了其中的begin()函数。第一个参数 "v1.begin() "显示了要放在向量v2中的向量的起始值。第二个参数,"v1.begin() + 4 "显示了v1的最后一个位置,我们可以把它加到向量v2中。第三个参数,"v2.begin() + 1",显示了向量v2的起点,我们必须在那里添加或替换这些值。最后一个 "for "循环是用来迭代最新的向量v2,并在shell上显示它。
#include <bits/stdc++.h>
using namespace std;
int main(){
vector<int>v1 {2, 4, 6, 8, 10};
vector<int>v2 {0, 0, 0, 0, 0};
cout <<"Vector 1: ";
for (int i=0; i<v1.size(); i++) {
cout << " " << v1[i]; }
cout << endl;
cout <<"Vector 2: ";
for (int i=0; i<v2.size(); i++) {
cout << " " << v2[i]; }
cout << endl;
std::move(v1.begin(), v1.begin() + 4, v2.begin() + 1);
cout <<"Vector 2 After move: ";
for (int i=0; i<v2.size(); i++) {
cout << " " << v2[i]; }
cout << endl;
return 0; }

在执行时,两个向量首先被分别显示。之后,更新的向量v2显示最后更新的4个值。

总结
这篇文章解释了C++中std::move()函数的例子。我们使用了push_back()函数,在代码中更清楚地阐述了。我们在代码中涵盖了向量的概念,以利用移动函数。
