- 博客(38)
- 收藏
- 关注
原创 C++ stack适配器(配接器)
stack的介绍文档stack就是栈,满足后入先出(LIFO)原则适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另一个接口container adapter 两个容器 stack 、queue其实是适配器function adapter 改变仿函数的接口者。
2024-10-25 10:00:00
838
2
原创 C++ queue适配器(配接器)
queue的文档介绍queue就是队列,满足先入先出(FIFO)原则适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另一个接口container adapter 两个容器 stack 、queue其实是适配器function adapter 改变仿函数的接口者。
2024-10-24 10:00:00
689
原创 C++ deque容器
deque的文档介绍deque吸取了vector的随机迭代器,支持++ -- + -操作,访问某个数据的效率可以达到O(1),并且使用方便,大多数接口与vector一致deque称之为双端队列,顾名思义就是支持两端插入删除的特殊队列,所以deque一般也是运用经常头插头删和尾插尾删的场景。
2024-10-23 10:00:00
1984
4
原创 C++ vector容器
vector的文档介绍使用STL的三个境界:能用,明理,能拓展,那么下面学习vector,我们也是按照这三个阶段来进行逐步深入学习。构造函数声明接口说明vecotr();无参构造构造并初始化n个val拷贝构造使用迭代器进行初始化构造// 无参构造// 4个int类型值为100// 拷贝构造。
2024-10-21 10:00:00
982
1
原创 C++ string类
Linux的g++当容量值n > 字符串长度size;进行缩小,缩小的大小满足扩容的整数对齐当扩容值n < 字符串长度size;进行缩小但不会小于size,依然满足扩容的整数对齐。
2024-08-11 17:05:57
1285
原创 C++ string类的模拟实现
这篇文章,主要就是展示模拟实现C++标准库中的string类的代码,下面就是具体的代码,同时也上传了具体的文件。
2024-08-11 10:30:00
331
原创 C++模版
class 类模板名// 类内成员定义// 一个简单的Stack类模板public:,_size(0){}~Stack()private:T* array;// 模板不建议声明和定义分离到两个文件.h 和.cpp,这样会出现链接错误template // 模板只是一个模具,不是类型,重名不会报错template指明的模板只能支持相邻的下一个语句使用,后面如果需要得重新指明。如上面的声明和定义分离,定义的时候就重新再指明了模板,否则将会报错。
2024-08-09 13:30:00
729
原创 CC++ 内存管理
这是new/delete 和 malloc/free最大区别就是new和delete对于自定义类型除了开空间外,还会调用自己的构造函数和析构函数。int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】// 除了开空间外,还会调用构造函数和析构函数// 动态申请一个A类型的空间并自动调用拷贝构造初始化为10。
2024-08-09 10:30:00
2018
原创 【C++语法糖】范围for
C++11标准后引入了范围for,这个范围for是一种语法糖,来简化代码书写。下面是简单遍历数组的一段简单代码但是如果将数组换成不连续存储的链表list,就不能使用上面的方式,得用迭代器。我们可以看到这段代码还是相对比较麻烦的,C++11以后引入了范围for的语法糖就大大简化了上面的代码。
2024-08-08 13:30:00
2223
原创 C++ auto关键字
C++中有很多很长的类型,那么作为一个优秀的编程语言肯定会想办法便利程序员开发。在C语言中typedef给类型取别名,但是typedef还是有很多不足,比如我只用一次该类型,那么typedef重命名就有点多余了。C++11标准中将auto赋予新的含义,也可以完成这一功能。
2024-08-08 10:00:00
467
原创 类和对象(下)
上篇类和对象(中)已经介绍了六种默认构造函数,这篇主要是对类和对象的补充,如构造函数中的初始化列表、explicit的使用、static使用以及编译器对对象构造时的优化等等。
2024-08-07 17:00:00
747
原创 类和对象(中)
默认成员函数就是用户没有显示实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成一下6个默认成员函数初始化和清理和拷贝赋值比较重要,取地址重载不重要,C++11还增加了两个默认成员变量,移动构造和移动赋值。但是,大多数情况下,编译器是无法自动生成与我们需求完全一致的默认成员函数,这就需要我们自己来进行编写。
2024-08-07 12:49:33
1121
原创 类和对象(上)
class为定义类的关键字,Stack为类的名字(自定义),{}中为类的主体即一个类域,注意类定义结束时后面分号不能省略(与struct一致)。类体重内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加"_"或者"m"开头,具体编码风格看公司要求。C++中的struct也可以定义类,是一个公共类,C++兼容C中struct的用法,同时struct升级成了类。
2024-08-06 13:00:00
2207
原创 C++引用
引用不是新定义一个变量,而是给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间。类型& 引用别名 = 引用对象;int a = 10;int& b = a;
2024-08-06 09:00:00
420
原创 C++空指针(nullptr)
nullptr是一种特殊类型的字面量,它可以转换成任意其他类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被隐式地转换为指针类型,而不能转换为整型类型。通过 f((void*)0) 我们可以知道C++对指针类型转换比较严格,无法将 void* 类型转换成 int*。 在C语言中我们把空指针定义成NULL,但是这在C++中会有所问题,因为C++对指针类型转换比较严格。如此可知,C++中NULL被定义为字面常量0,C中NULL被定义为无类型指针(void*)的常量。
2024-08-05 17:04:27
969
原创 C++ 域
所以从上可知局部域和全局域除了会影响编译查找逻辑(就近原则),还会影响变量的生命周期(一般以一对 “{ }” 所在的区域为生命周期)。 C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量/函数/类型出处(声明或定义)的逻辑,局部域和全局域除了会影响编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期。
2024-08-05 16:58:57
307
原创 sizeof 和 strlen 的对比
本篇文章主要围绕着sizeof和strlen展开叙述,主要目标是了解这两个的用法,注意事项,以及辨析两者间的区别。
2024-04-20 08:00:00
753
原创 深入理解指针(3)
这篇文章主要以各种各样的指针类型以及指针和数组的结合类型进行展开叙述,如(字符指针,数组指针,函数指针,函数指针数组),并且还简单的写了一个了转移表。内容有点长,但是我相信如果能看完的话,能对你有所帮助。
2024-04-18 16:40:58
1200
1
原创 深入理解指针(1)
计算机中处理数据时,得先去通过地址总线去寻找数据,这就得引入地址的概念。地址可以抽象成数据存放的位置。而指针就是用来存放地址。
2024-04-16 09:00:00
1854
原创 C++的命名空间(namespace)
其分为两种情况:1、引入头文件中namespace所自定义空间名字相同时,命名空间中成员名称无重复,那么他们会合并为一个命名空间,编译通过2、引入头文件中namespace所自定义空间名字相同时,命名空间中成员名称有重复,那么程序会在链接时报错。因为连接器会检测到重复定义的变量结论:重复定义只针对有内存操作的变量等相关定义,命名空间定义没有内存相关操作,所以不存在重复定义问题。
2024-02-23 09:00:00
807
1
原创 区分a++ , ++a
2、当a++,++a需要其本身的值时,我们可以将其拆成两个部分{b = a;a = a+1} (b为引入的变量,用于记录a本身的值)当++a时,先a = a+1,后b = a (方便记忆:++在a的左侧,故先+1,再赋值)当a++时,先b = a,后 a = a + 1 (方便记忆:b在a的左侧,故先赋值,后+1)1、当a++,++a在不需要本身的值的时,两者等效,都为a = a + 1。++a本身值为a+1,而执行这一表达式后a为+1后的值。
2023-12-28 09:00:00
642
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人