看了书和老师的讲解,这里大体说一下自己对迭代器和萃取技术的理解。 迭代器它是C++标准模板库里面的智能指针(smart pointer),由于STL设计时并不是以OOP思想为指导,而是以GP,所以让容器与算法分离实际,这么做的好处是可以让各个模块的设计者无需去关系其他模块的实现,从而专心于自己的模块 ...
分类:
其他好文 时间:
2019-12-14 16:05:34
阅读次数:
95
[易学易懂系列|rustlang语言|零基础|快速入门|(21)|智能指针] 实用知识 智能指针 我们今天来讲讲Rust中的智能指针。 什么是指针? 在Rust,指针(普通指针),就是保存内存地址的值。这个值,指向堆heap的地址。 什么是智能指针? 在Rust,简单来说,相对普通指针,智能指针,除 ...
分类:
编程语言 时间:
2019-12-14 13:50:49
阅读次数:
94
智能指针实际上就是通过模板技术实现的一个类 内存泄露(臭名昭著的Bug)——在软件开发和测试阶段都不容易被发现-动态申请堆空间,用完后不归还-C++语言中没有垃圾回收的机制-指针无法控制所指堆空间的生命周期 当代C++软件平台中的智能指针-指针生命周期结束时主动释放堆空间-一片堆空间最多只能由一个指 ...
分类:
其他好文 时间:
2019-12-12 22:23:21
阅读次数:
125
pcl::PointCloud::Ptr "PCL官网/帮助文档" 函数定义 有关boost库里的智能指针: Boost::shared_ptr,创建一个简单的智能指针是非常容易的。但是创建一个能够在大多数编译器下通过的智能指针就有些难度了。而创建同时又考虑异常安全就更为困难了。Boost::sha ...
分类:
编程语言 时间:
2019-11-21 16:58:51
阅读次数:
141
#include <memory> //c++11 std::shared_ptr<int> p3(new int); *p3 = 10; cout << "p3:" << *p3 << endl; ...
分类:
编程语言 时间:
2019-11-06 16:36:25
阅读次数:
83
一、weak_ptr出现的意义 上一节提到过shared_ptr,它会自动释放“不再需要使用的对象”的相应的资源,但是它不是万能的,在某些时候(比如说循环引用),它会显得力不从心,这就是weak_ptr出现的意义; 1.1 weak_ptr 使用特性 weak_ptr也是一个模板,只提供能接受一个s ...
分类:
编程语言 时间:
2019-11-03 18:12:11
阅读次数:
113
线程没有调用join和detach thread对象必须调用join或者detach,否则程序会终止 例如: c++ void func() { std::cout ...
分类:
编程语言 时间:
2019-10-23 11:56:50
阅读次数:
107
动态内存与智能指针 智能指针分为shared_ptr、unique_ptr、weak_ptr,他们负责自动释放所指向的对象,shared_ptr允许多个指针指向同一个对象,unique_ptr独占所指向的对象,weak_ptr是一种弱引用,指向shared_ptr所管理的对象,他们都定义在memor ...
分类:
其他好文 时间:
2019-10-19 19:08:57
阅读次数:
102
由于在c++中我们可以动态分配内存,但有时候我们会忘记用 delete或free释放内存,就会导致内存泄露。所以c++11提供了智能指针这种东西 本文参考了知乎某知乎友的 https://www.zhihu.com/people/mo-shan-zhe/activities 比如下面这两种情况 可能 ...
分类:
编程语言 时间:
2019-10-16 19:44:18
阅读次数:
99
1.9 再论shared_ptr 的线程安全 虽然我们借shared_ptr 来实现线程安全的对象释放,但是shared_ptr 本身不是100% 线程安全的。它的引用计数本身是安全且无锁的,但对象的读写则不是,因为shared_ptr 有两个数据成员,读写操作不能原子化。根据文档11,shared ...
分类:
编程语言 时间:
2019-10-08 20:31:03
阅读次数:
540