- 博客(17)
- 资源 (68)
- 收藏
- 关注
原创 (P73+P74)stl(二+三):vector源码分析,内存分配子Allocator
文章目录1.vector源码分析2.内存分配子Allocator1.vector源码分析eg:P73\01.cpp#include <vector>#include <iostrem>using namespace std;int main(void){ //vector<int> 是一个模板类,定义一个对象v会引发模板类的构造函数的调用 vector<int> v; return 0;}vector模板
2021-01-28 23:06:55 492
原创 (P72)stl(一):泛型程序设计,什么是STL,STL六大组件及其关系
文章目录1.泛型程序设计2.什么是STL3.STL六大组件及其关系1.泛型程序设计泛型编程(generic programming)类属编程将程序写得尽可能通用将算法从数据结构中抽象出来,成为通用的算法是对数据处理的逻辑,提供相同的算法和逻辑对不同类型的数据结构进行操作,eg:排序算法就是泛型的算法,能适用于不同的数据类型(将类型当作参数来传递,类型参数化)C++的模板为泛型程序设计奠定了关键的基础模板能够提供类型参数化编程2.什么是STLSTL(Standard Template
2021-01-27 23:13:27 576 2
转载 git add 多个文件,但想忽略某一个文件
1.问题比如修改了 a.txt b.txt c.txt d.txt,在 git add 的时候,想 add a,b,c 三个文件,但是想临时忽略(即不提交 d.txt)的修改,请问有没有对应的指令,而不是用 ignore 文件类似于 git add all -escape d.txt 之类的,,(-escape 是我自己假想的),2.解决办法先用以下命令添加所有git add -u再以下命令排除掉你不想添加进去的某几个文件,比如我这里要排除“static/js/dashboard.js”
2021-01-27 11:45:50 4740
转载 C/C++的内存泄漏工具valgrind memcheck的使用小结
文章目录1.valgrind内存泄漏的常用选项2.常见的错误1.valgrind内存泄漏的常用选项valgrind --tool=memcheck --leak-check=full ./a.out2.常见的错误(1)最多最低级的错误:不匹配地使用malloc/new/new[] 和 free/delete/delete[](2)最看不懂的错误:一堆看不懂的Invalid read/write错误(更新:已解决)(3)最不明所以的内存泄露:definitely lost/in
2021-01-23 15:19:40 169 1
原创 (P71)模板四:用模板实现单例模式,第36章的动态创建对象改为用模板方式来实现
文章目录1.用模板实现单例模式2.第36章的动态创建对象改为用模板方式来实现1.用模板实现单例模式2.第36章的动态创建对象改为用模板方式来实现参考:从零开始学C++之模板(四):用模板实现单例模式(线程安全)、模板方式实现动态创建对象...
2021-01-21 22:59:07 226
原创 (P70)模板三:缺省模板参数,成员模板,关键字typename,派生类和模板,面向对象与泛型
文章目录1.缺省模板参数2.成员模板3.关键字typename4.派生类和模板5.面向对象与泛型1.缺省模板参数(P69)模板二:类模板,非类型模板参数中Stack类模板内部所用数据结构的实现是T*,可以看成是动态数组,具有数组的特征,空间是连续的,企鹅可以通过参数传递来控制空间大小,Stack里面的数据结构还可以是链表,队列typename CONT = std::vector<T>表示可以将数据结构类型传递进来template <typename T, typename C
2021-01-20 23:18:22 378
原创 (P69)模板二:类模板,非类型模板参数
文章目录1.类模板2.非类型模板参数1.类模板类模板:将类定义中的数据类型参数化,用参数来传递eg:vector,表示vector内部所存放的数据类型是int,以此类推,vector类模板实际上是函数模板的推广,可以用相同的类模板来组建任意类型的对象集合eg:vector,int类型对象的集合vector,vector,字符串类型的集合string类模板的定义直接用代码说话!template <类型形参表>class <类名>{ //类
2021-01-19 23:05:17 245
原创 (P68)模板一:模板,函数模板,函数模板特化,重载函数模板,非模板函数重载
文章目录1.模板2.函数模板3.函数模板特化4.重载函数模板5.非模板函数重载1.模板考虑求两数较大值函数max(a,b)对于a,b的不同类型,都有相同的处理形式:return a < b ? b : a;用已有方法解决:(1)宏替换 #define max(a,b) ((a)< (b) ? (b) : (a))存在的问题:避开类型检查(2)重载存在的问题:需要许多重载版本,当新增一个函数类型,需要求2个数的最大值时,需要提供一个新的重载版本,不方便扩展(3)使用函
2021-01-17 22:35:27 345 2
原创 (P67)面向对象版表达式计算器:实现命令,序列化
文章目录1.实现命令2.序列化1.实现命令!s filename保存文件的时候,需要保存符号表的信息,变量表的信息(符号表中包含了函数名和变量名信息,变量表中包含了变量名的值)。所以,SymbolTable类, Storage类是可序列化的类,可以保存到文件中,也可以把它加载到相应的对象中。Calc类也应该是可序列化的类,因为Calc类包含了SymbolTable类, Storage类。所以在序列化时,只需要调用Calc类的序列化,然后再调用SymbolTable类, Storage类的序列化。
2021-01-17 20:55:35 225
原创 (P66)面向对象版表达式计算器:序列化 ,Serializer类
文章目录1.序列化2.Serializer类1.序列化Serializer类实现提供对文件的写操作,为!s做准备DeSerializer类实现提供对文件的读操作,!l做准备2.Serializer类文件输出流对象;重载了一些基本类型的插入运算符(文件读写的基础类);(要对某个具体的对象进行写操作,实际上是调用下面的接口,按照一定的格式写入到文件中),这里只是封装了文件基本类型的写入和读取操作,并没有封装某个对象的写操作以及将文件中的数据加载进来到某个对象当中。startUML类图
2021-01-14 23:13:28 207
原创 (P65)面向对象版表达式计算器:调试一个BUG,命令实现(!f,!v)
文章目录1.调试一个BUG2.命令实现1.调试一个BUG出错的测试如下:一个变量a,一个变量b,先给变量b赋值就会出错原因:符号表中存放了2类数据:函数,常量与变量共13个函数,符号表的id为0-12e的位置是13pi的位置是14a的位置15b的位置是16解析到标识符之后,如果没有遇到括号的话,说明它是一个变量,如果没有找到这个变量的id,会将这个变量添加到符号表中,然后返回这个变量的id,但是这个变量没有添加到Storage类对象中,Storage没有添加数据会导致id大于变量表的
2021-01-13 23:11:01 185
原创 (P64)面向对象版表达式计算器:命令解析框架的搭建
文章目录1.命令解析框架的搭建1.命令解析框架的搭建命令以!打头支持的命令!quit退出程序!v打印变量列表,将当前支持的常量,变量打印输出!f打印输出所支持的函数!l filename从一个文件加载变量或符号信息!s filename变量或符号信息保存到变量中!help帮助命令12:32...
2021-01-11 23:11:33 231
原创 rpc和grpc和protobuf
文章目录1.rpc2.grpc1.rpceg:计算a+b=?的函数RPC指的是将a+b=?的功能的函数封装在另外一台server机器上,而client机器只需将参数a和b打包发送到server端,server端运行完毕后,打包发送给client端。为什么需要RPC?client运行的一个程序完成的A功能,但是A功能需要B功能,但是client他没有B功能,所以需要server端提供B功能的结果,通过调用B功能的集群,来获取他们的结果http和rpc的区别?其实问的是http,swift,grp
2021-01-10 18:31:48 1425
原创 (P63)面向对象版表达式计算器:调试一个bug,Parser类改进,Scanner类改进
文章目录1.调试一个bug2.Parser类改进3.Scanner类改进1.调试一个bugeg:bug1:P63\Calculator\Node.h,修改前class AssignNode : public BinaryNode{public://构造函数初始化,要调用基类部分的构造函数 AssignNode(std::auto_ptr<Node>& left, std::auto_ptr<Node>& right) : Bin
2021-01-07 23:06:46 230
原创 (P62)io流类库:输出流格式化
文章目录1.输出流格式化2.输出流格式化的宽度控制3.输出流格式化的对齐控制4.输出流格式化的填充控制5.输出流格式化的精度控制6.输出流格式化的进制控制1.输出流格式化方式1:以操作子方式格式化数据输入输出的格式控制使用系统头文件中提供的操纵符。把它们作为插入操作符<<的输出对象即可。如setiosflags、setw、setfill、setprecision、hex、oct等。控制台默认的代码页可能,不是中文,ystem(“chcp 936”);可以设置成中文的12:45
2021-01-06 23:05:19 350
原创 (P60)io流类库:文件读写,二进制文件的读写,文件随机读写tellp、tellg、seekp、seekg
文章目录1.文件读写2.二进制文件的读写3.文件随机读写tellp、tellg、seekp、seekg1.文件读写文件读写方式1:<<, >>,文件读写方式2:get, put,read,write文本模式打开与二进制模式打开的区别eg:P60\01.cpp#include <cassert>#include <iostream>#include <fstream>#include <stri
2021-01-03 22:35:59 850 1
Shell编程ppt[C++教程网cppcourse[1].com].zip
2020-05-06
跟我一起学C++.zip
2020-05-06
NetworkProgramming-master.zip
2020-05-06
muduo_server_learn.zip
2020-03-12
Docker学习资料总结.7z
2020-02-08
VS code的linux服务器端的离线安装教程
2019-11-09
Scientific.Toolworks.Understand.v4.0.811.Incl.Keygen-AMPED.zip
2019-09-07
vscode的remote ssh中需要的ubuntu服务器中的sshd配置文件
2022-06-19
postgresql数据库插件PG-Strom中Scan算子执行流程分析
2022-03-16
CUDAppt.zip
2021-12-28
cpptools-osx.vsix
2019-12-05
VSCode Cpptools最新版1.40.2版本.7z
2019-12-04
VSCode Cpptools.7z
2019-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人