c++11 std::move() 的使用

Jelena ·
更新时间:2024-11-14
· 850 次阅读

std::move函数可以以非常简单的方式将左值引用转换为右值引用。(左值、左值引用、右值、右值引用 参见:http://www.cnblogs.com/SZxiaochun/p/8017475.html)

通过std::move,可以避免不必要的拷贝操作。

std::move是为性能而生。

std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝

#pragma once
#include "pch.h"
#include 
#include 
#include 
#include 
int main()
{
	std::string str = "Hello";
	std::string str1 = "Hello123";
	std::vector v;
	//调用常规的拷贝构造函数,新建字符数组,拷贝数据
	v.push_back(str);
	std::cout << "After copy, str is \"" << str << "\"\n";
	//调用移动构造函数,掏空str1,掏空后,最好不要使用str
	v.push_back(std::move(str1));
	std::cout << "After move, str is \"" << str1 << "\"\n";
	std::cout << "The contents of the vector are \"" << v[0]
		<< "\", \"" << v[1] << "\"\n";
}

参考链接:https://blog.csdn.net/BJUT_bluecat/article/details/85683886

https://blog.csdn.net/u013390476/article/details/52040225

https://blog.csdn.net/p942005405/article/details/84644069

https://www.cnblogs.com/SZxiaochun/p/8017349.html


作者:小锐驿站



move c+ c++11 C++

需要 登录 后方可回复, 如果你还没有账号请 注册新账号