摘要: 1、shared_ptr共享智能指针 std::shared_ptr使用引用计数,每个shared_ptr的拷贝都指向相同的内存,在最后一个shared_ptr析构的时候,内存才会释放。 1.1 基本用法 1.1.1 初始化 shared_ptr可以通过make_shared来初始化,也可以通过sh 阅读全文
posted @ 2017-10-17 22:13 Memset 阅读(4550) 评论(0) 推荐(2) 编辑
摘要: 1、emplace_back减少内存拷贝和移动 emplace_back能通过参数构造对象,不需要拷贝或者移动内存,相比pusk_back能更好的避免内存的拷贝和移动,使容器插入元素性能得到进一步提升。几乎所有的标准库容器都增加了类型的方法:emplace,emplace_hint,emplace_ 阅读全文
posted @ 2017-10-17 22:04 Memset 阅读(1411) 评论(0) 推荐(0) 编辑
摘要: 1、move C++11中可以将左值强制转换为右值,从而避免对象的拷贝来提升性能。move将对象的状态或者所有权从一个对象转移到另一个对象,没有内存拷贝。深拷贝和move的区别如图: 从图可以看出,深拷贝会有两份内存,而move只有一份,move只是将内存的所有者切换为目标对象,并没有移动任何东西, 阅读全文
posted @ 2017-10-17 22:01 Memset 阅读(1080) 评论(0) 推荐(0) 编辑
摘要: 1、左值与右值 C++11中新增了一种类型,右值引用,标记为T &&。 首先来介绍什么是左值和右值,左值是指表达式结束后依旧存在的持久对象,而右值是指表达式结束之后就不再存在的临时对象。一个区分左值与右值的简单方法就是: 能不能对表达式取值,如果能,则是左值,否则为右值。所有具名变量或对象都是左值, 阅读全文
posted @ 2017-10-17 21:47 Memset 阅读(2091) 评论(0) 推荐(1) 编辑