C/C++学习
文章平均质量分 87
学习
903419
这个作者很懒,什么都没留下…
展开
-
设计模式:策略模式
1. 什么是策略模式?2. 谁来选择具体的策略算法呢?2.1 上下文做参数传递给策略对象3. 策略模式的优缺点:4. 何时选用策略模式?原创 2021-03-08 17:43:21 · 232 阅读 · 1 评论 -
C++类型转换
1. C语言类型转换1.1 隐式类型转换1.2 强制类型转换1.3 C语言类型转换存在的缺点2. C++类型转换2.1 类类型转换2.2 类转换构造函数2.3 C++新增类型转换运算符2.3.1 static_cast2.3.2 const_cast2.3.3 reinterpret_cast2.3.4 dynamic_cast原创 2021-03-03 18:38:55 · 624 阅读 · 0 评论 -
设计模式:观察者模式
1. 什么是观察者模式?2. 推模型 和 拉模型3. 观察者模式优缺点4. 何时选用观察者模式?原创 2021-03-02 22:31:05 · 161 阅读 · 0 评论 -
设计模式:抽象工厂模式
1. 什么是抽象工厂模式?2. 抽象工厂模式的优缺点3. 何时选用抽象工厂模式?4. 抽象工厂模式和其它相关模式原创 2021-03-02 16:43:55 · 152 阅读 · 0 评论 -
设计模式:工厂方法模式
1. 什么是工厂方法模式?2. 参数化工厂方法3. 工厂方法模式和简单工厂模式4. 工厂方法模式优缺点5. 何时选用工厂方法模式?原创 2021-03-02 11:47:27 · 281 阅读 · 2 评论 -
设计模式:单例模式
1. 什么是单例模式?2. 饿汉3. 懒汉4. 单例模式优缺点原创 2021-03-01 20:21:52 · 1001 阅读 · 6 评论 -
设计模式:简单工厂模式
1. 简单工厂的概念2. 简单工厂的优缺点3. 何时选用简单工厂?原创 2021-03-01 16:06:13 · 890 阅读 · 9 评论 -
特殊类的设计
1. 只能在堆上创建对象的类2. 只能在栈上创建对象的类3. 不能被拷贝的类4. 不能被继承的类原创 2021-03-01 11:06:13 · 924 阅读 · 2 评论 -
C++中智能指针概念及模拟实现
什么是智能指针,提出智能指针的目的是什么,智能指针的各版本,及模拟实现。原创 2021-02-28 20:05:32 · 1024 阅读 · 3 评论 -
C++异常的规则
异常原创 2021-02-28 12:12:00 · 2469 阅读 · 8 评论 -
C++11中的线程库
C++11中的线程库原创 2021-02-25 17:09:31 · 447 阅读 · 0 评论 -
什么是右值引用?
右值引用,为什么引入右值引用原创 2021-02-24 21:45:39 · 4904 阅读 · 5 评论 -
C++11中的一些新特性
C++11中的一些新特性原创 2021-02-24 16:42:56 · 112 阅读 · 0 评论 -
海量数据处理的问题
海量数据处理原创 2021-02-24 14:24:29 · 308 阅读 · 2 评论 -
C++多态详解
C++多态原创 2021-02-08 17:15:06 · 1406 阅读 · 2 评论 -
C++继承中的详解,虚基表的理解
继承、虚基表原创 2021-01-31 21:23:11 · 755 阅读 · 0 评论 -
蓄水池抽样算法
问题:从n个元素中随机抽取k个元素,其中N无法确定。解法:我们总是选择第一个对象,以1/2的概率选择第二个,以1/3的概率选择第三个,以此类推,以1/m的概率选择第m个对象。当该过程结束时,每一个对象具有相同的选中概率,即1/n,证明如下。证明:第m个对象最终被选中的概率P=选择m的概率*其后面所有对象不被选择的概率,即对应蓄水池抽样问题,可以类似的思路解决。先把读到的前k个对象放入“水库”,对于第k+1个对象开始,以k/(k+1)的概率选择该对象,以k/(k+2)的概率选择第k+2个对象,以此类推转载 2020-12-10 15:36:13 · 133 阅读 · 0 评论 -
【C++】详谈malloc和new的区别
malloc和new的区别原创 2020-12-02 19:33:33 · 295 阅读 · 6 评论 -
【C++】vector入门,各个vector接口的详细介绍和使用,简单模拟实现vector!!!!
vector入门介绍原创 2020-12-01 17:54:10 · 853 阅读 · 8 评论 -
【C++】两数之和、三数之和、四数之和
两数之和、三数之和、四数之和原创 2020-11-28 14:41:30 · 947 阅读 · 3 评论 -
【C++】回文串插入字符串后,仍构成回文串。
回文串插入字符仍构成回文串!原创 2020-11-27 16:08:55 · 608 阅读 · 0 评论 -
【C++】给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数。
思路:模拟取余和除法原创 2020-11-26 14:20:06 · 3966 阅读 · 5 评论 -
【C++】解析模板的概念及用模板实现一个顺序表
模板概念函数模板类模板原创 2020-11-11 17:34:02 · 329 阅读 · 0 评论 -
4.5笔记(分支循环语句)
语句: c语言中由一个;隔开的就是一个语句。分支语句:if语句语法结构:if(表达式) 语句; if(表达式) 语句1;else 语句2; if(表达式1) 语句1;...原创 2020-04-05 17:35:10 · 118 阅读 · 0 评论 -
3.31笔记
#define:宏 ,宏一般只做简单的文本替换。有两个好处:便于代码维护。方便阅读,做到见名知意。#define DOUBLE(x) x*xint main(){ int a = 10; printf("%d\n", DOUBLE(a + 1));}那么这个例子中,输出的值是多少呢?宏一般只做简单的文本替换,即将所其中表达式代入宏定义中,则此为10+1*10+1,结果为...原创 2020-03-31 11:34:54 · 133 阅读 · 0 评论 -
3.29笔记
数组: 数组中的元素为同一类型。在使用数组的时候,必须对数组进行定义,再初始化,初始化时[]内可以不写,若写必须为常量而不能为变量。求一个数组的长度时可用:sizeof(arr) / sizeof(arr[0]);来求,一般后面的为arr[0],这一样可以避免数组中只有一个元素时求解出错。访问数组的每一个元素称为遍历。操作符:算数操作符:+ - * / %(求余运算符)移位操作符:>...原创 2020-03-29 18:03:20 · 143 阅读 · 0 评论 -
3.27笔记
字符串: 默认以\0结尾(占一个字节)。在c语言中使用字符串,有两种方式,借用指针和数组。必须注意到的就是,这样的字符串“”中,自带有结束符\0,而在{}中定义的无\0,必须自己写上。如果未写上了,在进行字符串相关的操作就会出错。如计算一个字符串的长度:int main(){ char arr[] = { 'b','i','t' }; printf("字符串长度为:%d\n", strl...原创 2020-03-27 23:48:11 · 135 阅读 · 0 评论 -
3.12笔记
1,如何交换两个值,不用第三个变量?①代入第三个变量法:int main(){ int num1 = 10; int num2 = 20; int num = 0; cout << num1 << '\t' << num2<<endl; num = num1; num1 = num2; num2 = num; cout <...原创 2020-03-12 23:24:15 · 100 阅读 · 0 评论 -
【C++】命名空间、缺省参数、函数重载、引用的理解和使用
命名空间、缺省参数、函数重载、引用原创 2020-09-22 15:56:47 · 239 阅读 · 0 评论 -
程序环境和预处理
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。原创 2020-07-15 11:31:39 · 194 阅读 · 0 评论 -
【C语言】文件相关函数的解释和使用
文件是什么?原创 2020-07-13 21:10:25 · 648 阅读 · 0 评论 -
动态内存管理笔记
为什么存在动态内存管理?空间在不同的需求下,可能需要不断调整,导致代码的可扩展性下降。有可能因为空间划分不合理,可能会导致空间浪费的问题。一般在栈上,能一次有效分配的空间是有限的。基于以上原因,故需要动态内存管理,动态内存管理带来的好处有:让我们在程序运行期间,来决定开辟空间的大小。申请多少就给多少。有效使用空间。不会造成空间上的浪费问题。可申请的空间更多。堆空间>栈空间。动态内存管理是在堆区申请空间,申请的空间是连续的。在栈上,栈:自动申请,自动释放。用户不需要进行动态内存原创 2020-06-24 16:30:47 · 198 阅读 · 0 评论 -
结构体、枚举、联合知识点
结构体: 具有相同或者不同类型的元素的集合。结构体也是一种类型。结构体只能在初始化时定义内容,而不能以赋值的形式进行,若想操作,可用·操作符。数组也是同样,若想赋值可以用循环。struct stu { char name[20]; char sex[5]; int age; char number[10];};不允许结构体内为空(C标准要求)。为空的话没有任何实际意义。结构体的成员可以是标量、数组、指针、还可以是其它结构体。1.结构体中的成员访问:结构体变量 访问成员,结构体变原创 2020-06-23 21:21:12 · 307 阅读 · 0 评论 -
【C语言】一文搞定通讯录管理系统(静态和动态)!!!附详细代码
1. 添加联系人信息2. 显示所有联系人信息3. 修改指定联系人信息4.查找指定联系人信息5. 删除指定联系人信息6. 清空所有联系人7. 排序所有联系人8. 读取文件联系人9. 存储联系人到文件原创 2020-06-22 19:33:16 · 728 阅读 · 8 评论 -
指针知识点笔记
指针是什么?指针是编程语言中的一个对象,利用地址,它的值可以指向存在电脑存储器中另一个地方的值。一般这样说指针就是地址。指针变量就是变量(用来存放地址的变量)。变量有不同的类型,整型,浮点型。指针同样也有类型。char *pc = NULL;short *ps = NULL;int *pi = NULL;long *pl = NULL;float *pf = NULL;double *pd = NULLchar * 类型指针存放char类型变量的地址;int * 类型指针存放i原创 2020-07-12 16:54:34 · 252 阅读 · 0 评论 -
字符串相关知识
1.字符串长度:strlen求字符串长度时,遇到“\0”就停下,前面所经过的字符数,就是字符串的长度,不包括“\0”。注意:该函数的返回值为无符号整数。例子:int main(){ const char *str1 = "abcdef"; const char *str2 = "nnn"; if (strlen(str2) - strlen(str1) > 0) { printf("str2 > str1"); } else { printf("str2 <原创 2020-06-14 18:25:29 · 1258 阅读 · 0 评论 -
字符串的左旋右旋问题
字符串的左旋右旋其实是一个问题,下面只对右旋进行分析。当一个字符串进行旋转的时候,字符串的大小会决定有效旋转次数。这里面的有效是指,后面的旋转会与前面的旋转相同,所以我们必须要对旋转次数进行去重。如“AABB”一次右旋:BAAB二次右旋:BBAA三次右旋:ABBA四次右旋:AABB五次右旋:BAAB 这里就和第一次右旋一样了,所以我们必须进行去重操作如何去重呢?用旋转的次数模上字符串长度即可。即count(次数) %= len(长度)。下面介绍几种实现右旋的方法:原创 2020-06-09 13:53:49 · 376 阅读 · 0 评论 -
数据在内存中的存储
1.整型空类型:void表示空类型void无法定义变量,因为类型不明确,就无法定义变量,开辟空间大小。但可以做函数的返回值,前提是该函数的返回类型为空。void *void *可以定义变量,能赋值,说明void *本身给变量开辟了空间,但void *对应的变量不能被直接解引用。void * 有什么用呢?void *有非常特殊的应用,就是void *可以用来接收任意类型,常用于接受任意指针。整型在内存中的存储:整型在计算机中存储的是补码。无符号数:原码=反码=补码有符号数:原创 2020-05-28 21:58:12 · 299 阅读 · 0 评论 -
5.17笔记(操作符)
1. 算术操作符 + - * / %注意:%的操作符的两个操作数都必须为整数。其余几个操作符皆可用于整数和浮点数。对于/操作符,如果两个数都是整数,则执行整数除法,若有一个为浮点数,则执行浮点数除法。 2.移位操作符逻辑移位:二进制位上进行左移右移,两头用0进行补充,不用关心符号位的问题。算术移位:二进制位上进行左移右移,两头用0进行补充,但必须保证其符号位不变。介绍4个汇编中的指令:SHL:逻辑左移SHR:逻辑右移SAL:算术左移SAR:算术右移int main().原创 2020-05-18 15:27:44 · 157 阅读 · 0 评论 -
4.24笔记(数组)
数组是一组相同类型元素的集合。 1.数组的创建 int brr[5] = { 1,2,3,4,5 }; char b[5] = "abcd"; int arr[] = { 1,2,4,5,6,7,8,9 }; char a[] = "abcdefg";在数组中,[]中要给一个常量,而不能为变量。也可以不写,元素的个数由后面初始化的内容来确定数组大小。注: ...原创 2020-04-24 16:56:55 · 119 阅读 · 0 评论