- 博客(68)
- 收藏
- 关注

原创 Qt Creator5.7安卓开发环境搭建
Qt Android开发需要安装插件:∙ Qt5.7.0 for Android ∙ JAVA JDK∙ Android SDK∙ Android NDK∙ ANT1、在有Qt 5.7的基础上安装qt-opensource-windows-x86-android-5.7.0.exe下载地址:http://download.qt.io/archive/qt/5.7/5.7.0/qt-open...
2018-06-20 15:36:15
13213
7
原创 STL标准库之智能指针
介绍C++标准库STL中三类智能指针unique_ptr、shared_ptr、weak_ptr的使用方式和常用使用场景。
2023-09-15 14:37:19
360
原创 STL标准模板库之<bitset>
bitset表示一个N位的固定大小的序列。可以用于标准的逻辑运算操作。可以与字符串和整数相互转化_Nb:表示存储的位的数量。
2023-09-03 18:53:19
543
原创 《设计模式》之适配器模式
把一个类的接口转换成客户端所期待的另一种接口,从而使原接口不匹配而无法再一起工作的两个类能在一起工作。Adapter模式主要应用与“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,遗留代码复用、类库迁移等方面非常有用。GoF23定义了两种Adapter模式的实现结构:对象适配器和类适配器。但类适配器采用“多继承”的实现方式,一般不推荐使用。对象适配器采用“对象组合”的方式,更符合松耦合精神。Adapter模式可以实现的非常灵活,不必拘泥于GoF23中定义的两种结构。
2023-06-14 22:33:45
1457
原创 《设计模式》之装饰器模式
动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码&减少子类个数)。通过采用组合而非继承的手法,Decorator模式实现了在运行时动态扩展对象功能的能力,而且根据需要扩展多个功能。避免了使用继承带来的“灵活性差”和“多子类衍生问题”。Decorator类在接口上表现为is-a Component的继承关系,即Decorator类继承了Component类所具有的接口。
2023-06-11 17:58:19
1172
原创 《设计模式》之解释器模式
给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。Interpreter模式的应用场合时Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的结构不断重复出现,并且容易抽象为语法规则的问题”才适合使用Interpreter模式。使用Interpreter模式来表示文法规则,从而可以使用面向对象技巧来方便地“扩展”文法。
2023-06-10 00:04:35
867
1
原创 《设计模式》之命令模式
将一个请求封装为一个对象,从而使你可用不同的请求对客户端进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。Command模式分根本目的在于将“行为请求者”与“行为实现者”解耦,在面向对象语言中,常见的实现手段是“将行为抽象为对象”。实现Command接口的具体命令对象ConcreteCommand有时候根据需要可能会保存一些额外的状态信息。通过使用Composite模式,可以将多个“命令”封装为一个“复合命令”MacroCommand。Command模式与C++中的函数对象有些类似。
2023-06-07 22:48:42
637
原创 《设计模式》之状态模式
允许一个对象在其内部改变时改变它的行为,从而使对象看起来改变了其行为。State模式将所有与一个特定状态相关的行为都放入一个State的子类对象中,在对象状态切换时,切换相应的对象;但同时维持State的接口,这样实现了具体操作与状态转换之间的解耦。为不同的状态引入不同的对象使得状态转换变得更加明确,而且可以保证不会出现状态不一致的情况,因为转换是原子性的——即要么彻底转换过来,要么不转换。如果State对象没有实例变量,那么各个上下文可以共享一个State对象,从而节省对象开销。
2023-06-05 21:33:49
466
原创 《设计模式》之单例模式
保证一个类仅有一个实例,并提供一个该实例的全局访问点。Singleton模式中的实例构造器可以设置为protected以允许子类派生。Singleton模式一般不要支持拷贝构造函数和Clone接口,因为这有可能导致多个对象实例,与Singleton模式的初衷违背。如何实现多线程环境下安全的Singleton?注意对双检查锁的正确实现。
2023-05-15 22:22:50
405
1
原创 《设计模式》之观察者模式
观察者模式又称订阅–发布,目标就是通知的发布者,观察者使通知的订阅者(接收通知)使用面向对象的抽象,观察者模式可以独立的改变目标和观察者,从而使二者之间的依赖关系达到松耦合目标发送通知书时,无需指定观察者,通知可以自动传播观察者自己决定是否需要订阅通知,目标对象无感知观察者模式是基于事件的UI框架中常用的设计模式,是MVC的重要组成部分。
2023-04-22 20:28:16
74
原创 Effective C++学习笔记
当std::swap效率不高是,需要提供一个swap成员函数,但要确定其不会抛出异常如果提供一个swap成员函数,那么应该提供一个非成员函数swap去调用成员函数swap。对于类而言要特例化std::swap使用std::swap时,要先取消命名空间再使用,而不要直接使用std::swap不要尝试在std中加入全新的东西可以增加程序的清晰度并改善程序的运行效率编写模板类时,如果需要与模板类相关函数支持所有参数的隐式转换的话,需要将函数定义在模板类中,并声明为友元函数。
2023-04-16 17:34:13
1490
原创 STL容器适配器之<priority_queue>
容器适配器。支持在末端插入元素,在首端删除元素。不支持随机访问。先进先出规则(FIFO)可以设置元素的优先级最高优先级的元素排在队头默认基础容器为vector,还可以使用deque作为基础容器,或者支持front()、pop_back()、push_buck()的其他容器。_Tp:表示存储的元素数据类型_Sequence:基础容器,默认为vector。_Compare:排序方式,可通过函数对象来自定义。
2023-04-08 11:08:33
460
原创 STL容器之<unordered_multiset>
关联式容器。每个元素都包含一个键和对应的值,键即是值。元素是无序的。相同键值可以有多个。支持单向迭代器。插入元素时不会使迭代器失效,删除元素时会使指向已删除元素的迭代器失效。插入、删除和查找元素时间复杂度为O(1),最坏情况下为O(n)。_Value:表示存储的值数据类型_Hash:哈希函数对象类型_Pred:表示按照键的排序方式。_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-04-07 22:31:37
664
原创 STL容器之<unordered_multimap>
关联式容器。每个元素都包含一个键和对应的值。元素是无序的。键可以不唯一,一个键可以对应多个值。支持单向迭代器。插入元素时不会使迭代器失效,删除元素时会使指向已删除元素的迭代器失效。插入、删除和查找元素时间复杂度为O(1),最坏情况下为O(n)。_Key:表示存储的键数据类型_Tp:表示存储的值的数据类型_Hash:哈希函数对象类型_Pred:表示按照键的排序方式。_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-04-06 23:30:04
862
原创 STL容器之<unordered_set>
关联式容器。元素是唯一的,既是值又是键。元素不能直接修改,需要先删除再插入。支持单向迭代器。插入元素时不会使迭代器失效,删除元素时会使指向已删除元素的迭代器失效。插入、删除和查找元素时间复杂度为O(1),最坏情况下为O(n)。。_Value:表示存储的数据类型_Hash:哈希函数对象类型_Pred:表示按照键的排序方式。_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-04-05 11:36:16
853
原创 STL容器之<unordered_map>
关联式容器。每个元素都包含用于一个键和对应的值。元素是无序的。键是唯一的。支持单向迭代器。插入元素时不会使迭代器失效,删除元素时会使指向已删除元素的迭代器失效。插入、删除和查找元素时间复杂度为O(1),最坏情况下为O(n)。_Key:表示存储的键数据类型_Tp:表示存储的值的数据类型_Hash:哈希函数对象类型_Pred:表示按照键的排序方式。_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-04-03 23:28:19
876
原创 STL容器之<multiset>
关联式容器。元素是唯一的,即是值又是键。元素不能直接修改,需要先删除在插入。支持双向迭代器。在插入、删除和搜索时间复杂度为log(n)。_Key:表示存储的键(值)数据类型_Compare:表示按照键的排序方式。_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-04-02 22:33:44
1217
原创 STL容器之<multimap>
关联式容器。每个元素都包含用于排序的键和对应的值。键值是不要求唯一(map中键要求唯一),同一个键可以对应多个值。支持双向迭代器。在插入、删除和搜索时间复杂度为log(n)。键不可以直接修改,需要先删除,再添加;值可以直接修改_Key:表示存储的键数据类型_Tp:表示存储的值的数据类型_Compare:表示按照键的排序方式。_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-04-02 16:09:19
504
原创 STL容器之<forward_list>
不支持随机访问。元素存储在不同且不相关的存储单元中。频繁插入、提取、移动和删除元素时效率较高。单项链表(list是双向链表)_Tp:表示存储的元素数据类型_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-04-02 12:22:19
523
原创 STL容器之<set>
关联式容器。元素是唯一的,即是值又是键。元素不能直接修改,需要先删除在插入。支持双向迭代器。在插入、删除和搜索时间复杂度为log(n)。_Key:表示存储的键数据类型_Compare:表示按照键的排序方式。_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-04-01 22:03:49
676
原创 STL容器之<map>
关联式容器。每个元素都包含用于排序的键和对应的值。键值是唯一的。支持双向迭代器。在插入、删除和搜索时间复杂度为log(n)。_Key:表示存储的键数据类型_Tp:表示存储的值的数据类型_Compare:表示按照键的排序方式。_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-03-30 22:39:56
435
原创 STL容器之<deque>
双端队列。不保证元素的存储在连续的地址空间。支持随机访问在首尾插入和删除元素时间复杂度为O(1),在其他位置插入元素时间复杂度为O(n)。_Tp:表示存储的元素数据类型_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-03-27 22:57:10
842
原创 STL容器适配器之<queue>
queue为容器适配器。支持在末端插入元素,在首端删除元素。不支持随机访问。先进先出规则(FIFO)默认基础容器为deque,还可以使用list作为基础容器,或者支持front()、pop_front()、back()、push_buck()的其他容器。_Tp:表示存储的元素数据类型_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-03-27 21:21:54
864
原创 STL容器适配器之<stack>
栈为容器适配器。要求先进后出(LIFO)。仅能从栈顶插入元素和获取元素。默认以deque容器作为基础容器,可以指定使用list、vector作为基础容器;或者其他支持back()、push_back()、pop_back()的容器都可以不支持迭代器_Tp:表示存储的元素数据类型_Alloc:表示所存储分配器的类型,负责元素内存的分配和释放。可选参数,一般不使用。
2023-03-26 12:41:03
508
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人