- 博客(25)
- 收藏
- 关注
原创 C/C++ list模拟
我们可以定义一个类,把节点_node封装起来,来弥补空间不连续的缺陷,能像vector那样一样来进行访问。template定义的模板参数只能供当前类或当前函数用而且我们可以在这个类里重载想要的东西使用时,我们就可以给每个类规范这个迭代器使用的名字,方便我们使用// 返回自己//返回节点自己//返回数据,数据类型为T= it._node;
2024-07-10 09:53:20
828
原创 C/C++ string模拟实现
1.1因为是模拟string,防止与库发生冲突,所以需要命名空间namespace隔离一下,我们来看一下基本内容1.2我们这里声明和定义分离,分为string.h和string.cpp最简单的是:把声明和定义都往命名空间里包就可以。
2024-06-15 21:12:51
1225
原创 C/C++ string详解
C++中string是标准库中一种容器,相当于保存元素类型为char的vector容器(自己理解),这个类提供了相当丰富的函数来完成对字符串操作,以及与C风格字符串之间转换,下面是对string一些总结。
2024-05-15 16:25:11
1199
30
原创 C/C++ 初识string
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。默认成员函数迭代器容量相关的C语言中:string串字符数组,可以扩容,可以增删改查。(更符合的信息都是字符串存的,比如身份证,名字,地址...数据和方法分离(空间和使用)C++中:string这里自定义类型s1可以像数组一样访问,而且访问越界有报错。//计算s1大小//访问字符串// 方法1:operator[]
2024-05-14 10:14:09
1084
25
原创 C++模板
比如:当用double类型使用函数模板时,编译器通过对实参类型的推演,将T确定为double类型,然 后产生一份专门处理double类型的代码,对于字符类型也是如此。函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定 类型版本.模板是写给编译器的,编译器根式实例化对象帮你找到合适的类型。用不同类型的参数使用函数模板时,称为函数模板的实例化。让编译器根据实参推演模板参数的实际类型。
2024-05-09 08:17:23
548
11
原创 类和对象(下)
3.尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量, 一定会先使用初始化列表初始化。4. 成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后 次序无关分析:如题,先声明a2,所以先初始化a2,此时传给a2的值为a1,a1未确定,所以a2为随机值;然后初始化a1,a的值为1传给a1,所以a1为1。
2024-05-08 11:11:17
1387
12
原创 类和对象之六个默认成员函数
如Satck Queue List。编译器自动生成的构造函数,对于内置类型成员变量不做处理(可处理,可不处理,看编译器),对于自定义类型成员才会调用。2、如果都是自定义类型成员,内置类型成员没有指向资源,也类似默认生成的拷贝构造就可以。若该类的数据成员中有指针成员,则会使得新的对象的指针所指向的地址与被拷贝对象的指针所指向的地址相同,是特殊的成员函数,需要注意的是,构造函数的虽然名称叫构造,但是需要注意的是构造函数的主要任务。c.自动生成的缺省拷贝构造函数,作为该类的公有成员,否则无法进行默认的拷贝构造。
2024-05-07 19:03:46
719
原创 C/C++内存管理
C++中,绝大多数使用new和deletenew会调用构造函数,来进行初始化。new和delete是用户进行动态内存申请和释放的操作符new 和 malloc , delete 和 free 差不多不同的地方是: new/delete 申请和释放的是单个元素的空间,new[] 和 delete[] 申请的是连续空间,而且new 在申请空间失败时会抛异常,malloc 会返回 NULL。new 的原理1. 调用 operator new 函数申请空间。
2024-05-07 16:31:31
895
2
原创 解剖this指针
通常在class定义时要用到类型变量自身时,因为这时候还不知道变量名(为了通用也不可能固定实际的变量名),就用this这样的指针来使用变量自身。
2024-04-16 17:26:42
968
7
原创 C++类与对象
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,className为类的名字,{}为类的主体,注意最后的分号类体中内容成为类的成员,类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的定义方法:类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名::在.h中声明,在cpp中实现。
2024-04-16 16:47:02
826
6
原创 初识C++
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{ } 中即为命名空间的成员。// wh是命名空间的名字// 1. 正常的命名空间定义// 命名空间中可以定义变量/函数/类型int val;//2. 命名空间可以嵌套int a;int b;int c;int d;//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
2024-04-14 19:29:31
947
4
原创 堆的模拟及问题
由于是小堆,大的数据进堆后,进行堆排序,大的数据自动往堆的底层走,保持堆顶的数据 是小的数。把小的数据放进堆里,然后把n-k个数据依次和堆顶的数据进行对比,大的就替换堆顶进堆,(建大堆,大的堆顶,比堆顶小就替换,替换的值自动往下走)关于堆,还有一个非常重要的知识点,就是计算堆的时间复杂度。,想了解堆,我们先来理解一下树,为什么这么说呢,我们看下文。了解的树的概念和类型,我们来了解一下堆的分类。,若一个节点含有子节点,则这个节点成为其子节点的父节点。,如所有节点都是A的子孙。
2024-03-29 20:36:36
860
3
原创 栈和队列的模拟实现
typedef struct QueueNode//链表结构体int val;}QNode;typedef struct Queue//变量结构体,pq是变量的结构体指针int size;}Queue;//初始化和销毁//入出队列//头插、尾插//队列是否为空、队列个数//初始化和销毁//销毁assert(pq);free(cur);cur = next;while (!
2024-03-20 08:21:20
406
8
原创 联合体(共用体)
联合体和结构体一样,也是由一个或多个成员构成的,且类型可以不同。但不同的是,给联合体中的一个成员赋值,其他成员的值也跟着变化。结果为为什么是4呢?我们来看下面的联合体的特点。
2023-12-09 10:47:59
1463
1
原创 自定义类型:结构体
结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。我们来定义一个学生类,有名字、年龄、性别、学号。
2023-12-08 12:26:17
1293
原创 C语言基础编程(随时更新)
2.getchar读取成功获得ascII码值,读取失败返回EOF(end of file,文件结束标志)= -1,也是整数。1.getchar获取字符,字符是有ascII码值的,ascII是整数,所以能接收。先打印空格,在打印a(输入)%m, %0m中的0表示补零。gatchar()获取字符。
2023-11-13 10:19:10
97
1
原创 使用移位操作符计算二进制中1的个数
循环32个比特位,找到所有1,不考虑负数。方法三的延申:判断一个属是否为2的次方数。:使用n = n & (n - 1)
2023-11-05 21:57:14
124
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅