关于右值 std::move
2024-10-21 02:55:22
今天发现一个情况,对容器map 进行 std::move 之后,原map被清空了。
map<int, int> tmp;
tmp[1] = 1;
tmp[2] = 2;
tmp[3] = 3;
tmp[4] = 4;
tmp[5] = 5;
map<int, int> tmp1;
tmp1[1] = 3;
tmp1[2] = 3;
list<map<int, int>> lmap;
lmap.push_back(std::move(tmp));
lmap.push_back(tmp1);
cout<<" " <<tmp.size()<<" "<<tmp1.size()<<endl; // 0 2
tmp 被清空,内存直接拷贝到了lmap;
这篇文章里介绍的很详细,其中有一段:
注意,标准库对象支持moved from的左值在moved 之后它的对象原值是有效的(可以正常析构),但是是unspecified的,可以理解为空数据,但是这个对象的其他方法返回值不一定是0,比如size().所以,moved from 之后的对象最好还是不要使用吧?(如有不正确理解,请告知)
所以 不要使用。
最新文章
- Struts2的基本流程的详细介绍
- openssl HeartBlood
- 【WPF学习日记】——Window的DataContext绑定ViewModel
- Template、ItemsPanel、ItemContainerStyle、ItemTemplate
- devm_kzalloc and kmalloc
- Codevs 1081 线段树练习 2
- CentOS 7 快速初始化脚本 for MySQL
- CentOS 6.5 简单编译安装Nginx
- Spark应用【根据新df更新旧df】
- mysql 记录根据日期字段倒序输出
- C#访问MySQL数据库的方法
- 05: greenlet:轻量级的并发编程
- 喵哈哈村的魔法考试 Round #1 (Div.2) 题解
- 【Acm】算法之美—Crashing Balloon
- linux批量修改文件名
- Java web 强制301跳转
- hihocoder1580 Matrix
- DATA 转 16 进制
- 如何ping测有端口的网站
- ASP.NET MVC 音乐商店 - 5 通过支架创建编辑表单 续