- 博客(15)
- 收藏
- 关注
原创 C++[list]
list的文档介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好、
2025-09-28 18:22:28
948
1
原创 C++[vector]
vector的文档介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。
2025-09-14 19:08:35
815
1
原创 C++[String类]
string类的文档介绍字符串是表示字符序列的类标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作 单字节字符字符串的设计特性。string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信 息,请参阅basic_string)。string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits。
2025-09-09 19:22:15
945
原创 C++[模板初阶]
class 类模板名// 类内成员定义在这里插入代码片// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具template<class T> //这表示我们定义了一个模板,其中T是一个占位符,代表任意数据类型(如int、double、string等)。class Vector //定义了一个名为Vector的类模板。当我们使用这个模板时,需要指定T的具体类型(例如Vector<int>、Vector<string>)。
2025-09-03 19:06:47
652
原创 C++[内存管理](下)
new的原理1.调用operator new函数申请空间2.在申请的空间上执行构造函数,完成对象的构造delete的原理1.在空间上执行析构函数,完成对象中资源的清理工作2.调用operator delete函数释放对象的空间new T[N]的原理1.调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请。2.在申请的空间上执行N次构造函数delete[]的原理。
2025-07-22 15:55:43
837
原创 C++[内存管理](上)
屏蔽malloc动态申请的内存和屏蔽new动态申请的内存进行对比,就能知道new/delete会调用构造函数和析构函数。内置类型区别不大。// new/delete对于自定义类型会调用构造函数和析构函数class Apublic:A(int a):_a(a)~A()private:int _a;int main()// malloc/free申请空间exit(-1);free(p1);delete p2;return 0;
2025-07-20 16:22:58
855
原创 C++[类与对象](四)
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。答案是不可以, 根本原因是const成员函数的承诺:const 成员函数承诺不会修改对象的状态(除非成员变量被 mutable 修饰)。当调用 const 成员函数时,this 指针会被隐式转换为 const ClassName*,这是完全合法的隐式转换。,非 const 对象可以调用 const 成员函数,这是因为const成员函数的。
2025-05-27 17:22:47
1694
1
原创 C++[类与对象](三)
根据我们日期的规则,只有2月的天数是不同的,此时我们可以创建一个数组来存放对应年份月份的天数,如果是平年的2月则为28天,如果是闰年的2月则为29天,因此我们在创建完数组之后判断一下即可。创建一个日期类,成员变量包括年月日(最好将成员变量权限设置为private,这样在类外就无法访问类中成员变量,起到一定的保护作用),内部实现获取某年某月的天数的函数,为了实现分文件设计,此时用户再在类外自己实现一个全局的赋值运算符重载,就和编译器在类中生成的默认赋值运算符重载冲突了,故赋值运算符重载只能是类的成员函数。
2025-05-25 15:58:26
634
原创 C++[类与对象](二)
因为:main方法中创建了Date对象d,而d中包含4个成员变量,其中_year, _month,_day三个是内置类型成员,销毁时不需要资源清理,最后系统直接将其内存回收即可;而 _
2025-05-21 20:33:43
1986
原创 C++[类与对象](一)
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1. 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。2. 类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成一般情况下,更期望采用第二种方式。
2025-05-18 23:07:23
712
原创 C++[入门](下)
在早期C/C++中auto的含义是:使用**auto修饰的变量,是具有自动存储器的局部变量,**但遗憾的是一直没有人去使用它,大家可思考下为什么?auto不再是一个存储类型指示符,而是作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。return 10;auto b = a;//auto e;无法通过编译,使用auto定义变量时必须对其进行初始化return 0;【注意】
2025-05-16 20:12:54
752
原创 C++[入门](上)
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。//1.正常的命名空间定义//1.正常的命名空间定义//命名空间中可以定义变量/函数/类型//定义变量int add(int left, int right)//定义函数struct Node//定义自定义类型int val;2.命名空间可以嵌套//test.cppint a;int b;int c;int d;
2025-05-14 19:28:57
580
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅