C++设计模式
cuixuange
https://github.com/cuixuage
展开
-
C++初步总结
https://github.com/huihut/interview#-cc基础类型1.枚举,替换define。 默认从零开始逐渐为枚举元素+1初始化类和对象this类的成员函数体是被所有对象共有; 函数体内访问成员变量通过this->访问成员函数static,const成员函数==>只能读取成员变量成员变量的初始化顺序类中成员变量的声明顺序 = 实际初始化的顺序...原创 2019-10-15 15:52:39 · 281 阅读 · 0 评论 -
Effective C++ 条款13~15
条款13:RAII资源管理 以对象管理资源,类定义时以构造函数申请资源,析构函数释放资源。将资源的申请封装到类内部。//heap区域被auto_ptr管理。类指针的对象 pointerlike对象。智能指针/*注:auto_ptr的常见误用:1.auto_ptr被销毁时自动删除它所指向的区域,注意不能让多个auto_ptr同时指向同一个对象。否则可能会出现对象被删除多次这是十分危险的 2.au原创 2018-04-14 10:05:04 · 206 阅读 · 0 评论 -
Effective C++ 条款18~21
条款18:接口的易用性 将return值存储于shared_ptr从而将delete责任推给智能指针。往往我们函数的返回值指定一个shared_ptr类型。 shared_ptr往往有两个属性 1.管理 2.删除 delete的删除器我们可以指定 P82std::tr1::shared_ptr<Inv> pInv (static_cast<Inv*>(0),get...原创 2018-05-19 10:46:59 · 218 阅读 · 0 评论 -
红黑树C++实现 Lite版
重构于Algorithm 4th的java 版本实现红黑树查找 插入操作 没有实现删除以及一些其它的API思考:1.nested class作为Node节点,其内部变量的含义都是什么?1.红黑树保持平衡依赖的转换方式?2.三种变换的判断条件是什么?//更详细的在书籍Algorithm 4th中的分类讨论过3.删除操作的有点复杂 就没拿c++重构后面在理解删除的思路实现与测试...原创 2018-12-09 21:07:49 · 1221 阅读 · 0 评论 -
Algorithm 4th Fundmentals--学习笔记
代码链接:https://github.com/ISCASTEAM/Algorithm1.binary searchurl get data练习edu.princeton.cs.algs4 普林斯顿算法 jar包2.dataStructqueue stack bag 链表实现3.Union Find连通集的查找API: union find connectedkey: 辅助数...原创 2018-12-21 20:32:12 · 154 阅读 · 0 评论 -
Algorithm 4th Sorting--学习笔记
代码链接:https://github.com/ISCASTEAM/Algorithm1.Elementray SortsSelect sort P156key:选择第i小的元素放入a[i]位置note:运行时间和输入顺序无关Insertion sort P157key:当前索引左边的所有元素是有序的,但是最终位置尚不确定note:运行时间和输入顺序相关(1.部分有序 2.小...原创 2018-12-21 20:33:06 · 166 阅读 · 0 评论 -
Algorithm 4th Searching--学习笔记
代码链接:https://github.com/ISCASTEAM/AlgorithmElementray Tables无序链表key: 插入时间O(1) 查找时间O(N)note: 新元素直接插入链表头部有序数组key:查找使用二分查找key: 插入时间O(N) 查找时间O(lgN)note: 插入元素BinarySearchTree1.基本实现get/put ...原创 2018-12-21 20:33:53 · 216 阅读 · 0 评论 -
Algorithm 4th Graphs--学习笔记
代码链接:https://github.com/ISCASTEAM/Algorithm无向图Graph.h 实现图的API 邻接链表保存边DFS BFS的核心代码应用连通性||单点路径 DFS or BFS单点最短路径 BFS其它:1.连通分量个数 DFS2.检测环 DFS3.双色问题 DFS有向图Digraph.h 实现图的API 邻接链表保存边应用单点可...原创 2018-12-21 20:34:43 · 178 阅读 · 0 评论 -
Algorithm 4th Strings--学习笔记
代码链接:https://github.com/ISCASTEAM/Algorithm字符串数组排序低位优先缺点:字符串要求相同长度高位优先三向快排排序思路:高位优先的,递归排序。之间相等部分去掉首字符继续递归note:大量具有公共前缀的字符串数组的排序//这两部分 我理解比较困难,实现复杂//我就跳过了单词查找树子串搜索正则表达式数据压缩只讨论无损压缩...原创 2018-12-21 20:35:36 · 140 阅读 · 0 评论 -
Algorithm 4th Context--学习笔记
代码链接:https://github.com/ISCASTEAM/Algorithm事件驱动的粒子碰撞B-树查找成本很低 需要空间大后缀数组字符串的子串中最长的公共前缀问题思路:排序的后缀数组,最长的公共前缀在相邻的位置出现最大流给定有向图找出满足平衡的最大流思路:剩余网络中不存在从S到T的增广路径(将增广路径所有边 add最小边的可增加容量)跳过归约问题不可解...原创 2018-12-21 20:36:23 · 137 阅读 · 0 评论 -
Effective C++ 条款16~17
条款16:new和delete采用相同形式 new数组删除时使用 delete[]形式 这是由于,对于数组对象来说,其在编译器内部存储方式使用count + items形式。//1。对于数组对象 delete[]能够避免析构次数过少的情况出现//2。避免在typedef中使用动态内存,例如vector,string等等例如:typedof std::string AddressLines[原创 2018-04-30 19:28:22 · 186 阅读 · 0 评论 -
Effective C++ 条款8~12
条款8.异常不要逃离析构函数 在RASII思想中,析构函数总是起到释放资源的作用,从而实现资源管理的目的。但是在资源释放的过程中,难免出现失败的情况,这种情况下析构函数会传播异常,造成难以驾驭的麻烦。解决方案:1.abort退出DBConn::~DBConn(){ try{ db.close(); }catch(...){ logs.ERR...原创 2018-04-07 11:24:17 · 323 阅读 · 0 评论 -
std::function 与 std::bind 的基础使用
function类就是一个函数的模板类,通过该类,可以很方便的创建出指向不同类型的函数指针。 bind可以绑定任何的函数对象,并且可以使用占用符,可以返回新的调用对象。#include <iostream>#include <functional>using std::cout;using std::endl;using std::bind;using std::function;//原创 2017-08-12 16:42:19 · 368 阅读 · 0 评论 -
allocator空间分配接口类实现Vector
//熟悉 static: allocate、deallocate 故模板类allocator对象需要静态声明 // construct、destroy(c++17废弃) //后期: 学习真正的 内部实现 Alloc模板类 二级空间分配器//allocator 简单实现自定义Vector模版//熟悉 static: allocate、deallocate 故模板类allo原创 2017-08-12 16:45:04 · 512 阅读 · 0 评论 -
C++ 单例模式Singleton+自动释放单实例-多版本
版本1: pthread_once 保证多线程环境下懒汉单例模式安全 atexit 注册程序结束时的销毁函数,自动销毁单实例int pthread_once(pthread_once_t * once_control , void(* init_routine)(void)); 1.其中pthread_once_t once_control = PTHREAD_原创 2017-07-28 22:25:28 · 1471 阅读 · 0 评论 -
自定义String类
String类: 1.无参数、带参数、对象浅拷贝、对象深拷贝等构造函数 2.运算符= += == != > < >= <=、输入输出流istream ostream的重载//实现Stinrg 类中 构造函数、运算符= += == != > < >= <=、输入输出流istream ostream的重载#include <iostream>//#include <String> //不加原创 2017-07-28 22:29:33 · 843 阅读 · 0 评论 -
Log4cpp 库安装及使用
日志C++库 log4cpp 安装: 源码安装 ./configure;make; make check; makeinstall 掌握: layout fileappender category的使用 编译选项: -llog4cpp -lpthread运行时,如若提示缺少log4cpp库文件,表示找不到log4cpp的动态库,需要进行以下设置 以管理员身份登录终端,然后执行以下原创 2017-07-28 22:34:16 · 2747 阅读 · 0 评论 -
自定义Stack、Queue类
stack.cc 自定义stack类 使用数组元素模仿当中数据成员 若栈溢出则结束当前进程 circular_queue.cc 自定义队列类 使用数组元素模仿其中数据成员 循环队列避免单向队列的假溢出 #include <iostream>#include <string.h> //包含对于字符串的处理函数using std::cout;using std::endl;class原创 2017-07-28 22:37:13 · 630 阅读 · 0 评论 -
Effective C++ Introduction导读
EffectiveC++ introduction 导读。开始阅读55个条款前,我先简单理解下基础知识。一.class 实例初始化 Widget(); //default Widget(const Widget& rhs); //copy Widget& operator=(const widget& rhs) //copy ass原创 2018-03-17 21:09:57 · 176 阅读 · 0 评论 -
Effective C++ 条款1~4
条款1:认知C++ C++扩展templates exceptions overloading virtual inheritance containers iterators 视C++为一个语言联邦包含了许多语言的特性条款2: 替换define define缺点:所定义的变量在预处理器中加以替换,可能会导致object code出现多次。一.const常量将const常量放入...原创 2018-03-24 16:17:18 · 289 阅读 · 0 评论 -
Effective C++ 条款5~7
条款5. 认知c++默认提供的类函数 如果你只是声明一个empty class ,c++编译器也会默认提供四个函数defult构造函数 copy构造函数 析构函数 copy assignment操作符条款6.不使用编译器自动生成的函数需要明确拒绝条款7.多态基类的析构函数声明为virtual类型原创 2018-04-01 14:35:25 · 202 阅读 · 0 评论 -
String COW 写时复制
String 类Copy_On_Write 技术实现: 申请堆空间时额外申请sizeof(cahr)大小空间用于保存引用计数值 Proxy 模式区别operator[]运算符的write(引用计数自减) , read情况 —Effective C++自定义一个String 类/* String 类Copy_On_Write 技术实现: 申请堆空间时而外申请sizeof(cahr)大小空原创 2017-08-12 16:27:54 · 615 阅读 · 0 评论