摘要: 模板方法 定义 定义一个操作中的算法的骨架 ,而将一些步骤延迟到子类中。 Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 ——《 设计模式》 GoF 背景 某个品牌动物园,有一套固定的表演流程,但是其中有若干个表演子流程可创新替换,以尝试迭代更新表演流 阅读全文
posted @ 2022-03-12 00:23 DarkH 阅读(63) 评论(0) 推荐(0)
摘要: 设计原则 依赖倒置 高层模块不应该依赖低层模块,两者都应该依赖抽象; 抽象不应该依赖具体实现,具体实现应该依赖于抽象; 自动驾驶系统公司是高层,汽车生产厂商为低层,它们不应该互相依赖,一方变动另一方也会跟着变动;而应该抽象一个自动驾驶行业标准,高层和低层都依赖它;这样以来就解耦了两方的变动;自动驾驶 阅读全文
posted @ 2022-03-11 20:11 DarkH 阅读(36) 评论(0) 推荐(0)
摘要: std::variant C++17增加stdvariant实现类似union的功能,但却比union更高级,variant主要是为了提供更安全的union。举个例子union里面不能有string这种类型,但stdvariant却可以,还可以支持更多复杂类型,如map等。 std::variant 阅读全文
posted @ 2022-02-20 19:05 DarkH 阅读(890) 评论(0) 推荐(0)
摘要: C++11 thread_local c++11引入thread_local关键字,用thread_local修饰的变量具有thread周期,从属于访问它的线程,线程第一次访问它时创建它且只创建一次(与被static的修饰的变量是一样的,多实例共享一份),线程结束时系统释放该变量。简单点说就是变成在 阅读全文
posted @ 2022-02-20 13:26 DarkH 阅读(229) 评论(0) 推荐(0)
摘要: 1.noexcept 的修饰和操作 C++ 相比于 C 的一大优势就在于 C++ 本身就定义了一套完整的异常处理机制。 然而在 C11 之前,几乎没有人去使用在函数名后书写异常声明表达式, 从 C11 开始,这套机制被弃用,所以我们不去讨论也不去介绍以前这套机制是如何工作如何使用, 你更不应该主动去 阅读全文
posted @ 2022-02-19 16:34 DarkH 阅读(82) 评论(2) 推荐(0)
摘要: 并行与并发 1 并行基础 std::thread 用于创建一个执行的线程实例,所以它是一切并发编程的基础,使用时需要包含 <thread> 头文件, 它提供了很多基本的线程操作,例如 get_id() 来获取所创建线程的线程 ID,使用 join() 来加入一个线程等等,例如: #include < 阅读全文
posted @ 2022-02-19 16:23 DarkH 阅读(83) 评论(0) 推荐(0)
摘要: 正则表达式 1.正则表达式简介 正则表达式不是 C++ 语言的一部分,这里仅做简单的介绍。 正则表达式描述了一种字符串匹配的模式。一般使用正则表达式主要是实现下面三个需求: 检查一个串是否包含某种形式的子串; 将匹配的子串替换; 从某个串中取出符合条件的子串。 正则表达式是由普通字符(例如 a 到 阅读全文
posted @ 2022-02-19 16:19 DarkH 阅读(153) 评论(0) 推荐(0)
摘要: 智能指针与内存管理 1 .RAII 与引用计数 引用计数这种计数是为了防止内存泄露而产生的。 基本想法是对于动态分配的对象,进行引用计数,每当增加一次对同一个对象的引用,那么引用对象的引用计数就会增加一次, 每删除一次引用,引用计数就会减一,当一个对象的引用计数减为零时,就自动删除指向的堆内存。 在 阅读全文
posted @ 2022-02-19 16:07 DarkH 阅读(102) 评论(0) 推荐(0)
摘要: 容器 1 .线性容器 std::array 看到这个容器的时候肯定会出现这样的问题: 为什么要引入 std::array 而不是直接使用 std::vector? 已经有了传统数组,为什么要用 std::array? 先回答第一个问题,与 std::vector 不同,std::array 对象的大 阅读全文
posted @ 2022-02-19 15:52 DarkH 阅读(181) 评论(0) 推荐(0)
摘要: 面向对象 委托构造 C++11 引入了委托构造的概念,这使得构造函数可以在同一个类中一个构造函数调用另一个构造函数,从而达到简化代码的目的: #include <iostream> class Base { public: int value1; int value2; Base() { value 阅读全文
posted @ 2022-02-19 15:44 DarkH 阅读(49) 评论(0) 推荐(0)