摘要:由来 在最近的项目中,我需要用到一个能设置固定长度的优先级队列,查了一下知名的第三方库,没有找到合适的,于是,决定自己写一个。 需要的功能主要是: 一个能存放对象的队列,支持push和pop 容量固定,可以配置 能自动排序 能够遍历 ring buffer 因为,我通读过STL的源码,对stl容器比 阅读全文
posted @ 2019-11-06 21:19 二狗啸地 阅读 (134) 评论 (0) 编辑
摘要:模板是编译器在编译期间生成代码。虚函数是程序运行期间计算出调用哪个函数。 一旦程序在运行期间计算出它需要调用一个模板化的虚函数,汇编已经生成了,编译器不能再生成合适的实例了。因此,你不能使用模板虚函数。 不过,有一些强大且有趣的技术起源于结合多态和模板,尤其是所谓的 type erasure c++ 阅读全文
posted @ 2019-10-24 18:00 二狗啸地 阅读 (12) 评论 (0) 编辑
摘要:介绍 gtest是谷歌开发的用来做C++单元测试的测试框架 基本概念 使用gtest,你就需要写断言(assertions),用来检查一个表达式是否为true。断言的结果有三个:正确、非致命错误、致命错误。如果出现致命错误,就会退出当前函数,否则继续执行当前函数的后续部分。 测试用例(tests)使 阅读全文
posted @ 2019-10-19 22:15 二狗啸地 阅读 (36) 评论 (0) 编辑
摘要:引入 shared_ptr 是c++为了提高安全性而添加的智能指针,方便了内存管理。 特点 shared_ptr 是通过指针保持对象共享所有权的智能指针。多个 shared_ptr 对象可占有同一对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是 阅读全文
posted @ 2019-09-01 15:30 二狗啸地 阅读 (177) 评论 (0) 编辑
摘要:template class Sp { public: Sp(T* ptr = nullptr) : ptr_(ptr), count_(new size_t) { if (ptr) { *count_ = 1; } else { *count_ = 0; } } Sp(c... 阅读全文
posted @ 2019-09-01 02:36 二狗啸地 阅读 (32) 评论 (0) 编辑
摘要:前言 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 当你需要从A的实例得到一份与A内容相同,但是又互不干扰的实例的话,就需要使用原型模式。 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个其实和C++的拷贝构造函数的作用是相似的(但不相同),实际上就是动态抽取 阅读全文
posted @ 2019-03-05 15:01 二狗啸地 阅读 (26) 评论 (0) 编辑
摘要:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 以建造小人为例子,一共需建造6个部分,头部、身体、左右手、左右脚。与工厂模式不同,建造者模式是在导向者的控制下一步一步构造产品的。建造小人就是在控制下一步步构造出来的。创建者模式可以能更精细的控制构建过程,从而能更精细的控制 阅读全文
posted @ 2019-03-05 11:25 二狗啸地 阅读 (16) 评论 (0) 编辑
摘要:工厂模式分为三类:简单工厂模式、工厂方法模式、抽象工厂模式。 简单工厂模式 特点是需要在工厂类中做判断,从而创造相应的产品。当增加新的产品时,就需要修改工厂类。 比如一家生产肥皂的工厂,它只有一家工厂,能够生产两种形状的白色肥皂,客户需要什么形状的,需要显示告诉工厂。 UML 工厂方法模式 简单工厂 阅读全文
posted @ 2019-03-05 10:37 二狗啸地 阅读 (28) 评论 (0) 编辑
摘要:定义 适配器模式是将一个类的接口转换为客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它包括类适配器和对象适配器。 场景 系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。适配器模式主要应用于希望复用一些现 阅读全文
posted @ 2019-03-04 16:36 二狗啸地 阅读 (16) 评论 (0) 编辑
摘要:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 以租房为例子,如果没有房屋中介,那么房客要自己找房东,而房东也要自己找房客,非常不方便。有了房屋中介机构就方便了,房东可以把要出租的房屋信息放到中介机构,而房客可以去中介机 阅读全文
posted @ 2019-03-04 15:11 二狗啸地 阅读 (19) 评论 (0) 编辑