- 博客(108)
- 收藏
- 关注
原创 仿函数的介绍
/ 仿函数(也叫函数对象)—— 类【重载了 operator()】// 类对象可以像函数一样去使用class lesspublic:public:int main()//本质上是:cout<< IsFunc.operator()(1,2) <<endl;return 0;
2023-09-26 11:53:11 101
原创 deque的简要介绍
/ deque底层是由 中控数组(指针数组)【存储各个小数组的地址】和 许多小数组【用于存储数据,且容量相等】 构成的。// 优势:既可以头尾插入删除,又可以随机访问 // 随机访问的方式:operator[](size_t i) // (i- 第一个buffer中个数)/8 第几个buffer // (i- 第一个buffer中个数)%8 那个buffer的第几个 // // 劣势:(1) operator[] 计算稍显复杂,大量使用会导致性能下降。// (2) 中间插入删除效率不高。
2023-09-21 20:22:06 36
原创 vector的模拟实现 总结
六、erase的迭代器失效——原因是:(pos指向的位置已经不再是原来的值了【由于数据挪动】)2、求出 capacity \ size,以及实现下标遍历及修改:[]三、用下标[]遍历,测试 insert 和 erase。七、测试构造函数(嵌套模板类的,参数是迭代器区间)一、测试 迭代器遍历、下标遍历、尾插、尾删。四、测试 insert时,迭代器失效的状况。五、补充:insert的迭代器失效。十、测试 resize 的功能。九、测试 赋值运算符重载。十一、打印出 杨辉三角形。八、测试拷贝构造函数。
2023-09-13 17:28:48 109
原创 vector的模拟实现
3、求出 capacity \ size 以及实现 operator[ ]2、构造函数与析构函数。6、任意位置插入、删除。
2023-09-02 18:07:47 219
原创 vector的用法
4、vector的迭代器区间与插入、删除。3、测试 vector 的默认扩容机制。5、vector的排序。2、遍历vector。
2023-08-31 11:55:39 80
原创 string的模拟实现
4、返回 C字符串形式、_size 、_capacity。11、测试实现的string类 模拟函数。1、构造函数、析构函数、迭代器。以及 operator [ ]9、判断字符串的大小关系。10、输出、输入操作符。
2023-08-29 12:45:46 165
原创 string用法的练习题
/练习题1:字符串最后一个单词的长度//描述:输入一行字符串,计算字符串最后一个单词的长度,单词以空格隔开int main()string str;//用cin输入字符串时,编译器遇到空格会自动跳到输入下一个对象if (pos!//找得到空格else//找不到空格(说明字符串只有一个单词)return 0;
2023-08-25 15:31:25 260
原创 STL---string 基本的成员函数
string类的构造函数//string类的构造函数string s1;// 构造+拷贝构造 ->优化成 直接构造*/string类的赋值运算符重载string s1;!!//赋值s1 = s2;//拷贝赋值//后面两种不常用s1 = 'y';operator[] 遍历string//s1[0] --> s1.operator[](0) --> char& operator[](size_t pos) 取到string的第pos个字符。
2023-08-20 09:44:20 125
原创 内存管理(2)
内存管理(2)4、new和delete的实现原理4.1 内置类型4.2 自定义类型5、定位new表达式(placement-new)【了解】6、常见面试题:malloc/free 和 new/delete 的区别;4、new和delete的实现原理4.1 内置类型// 如果申请的是内置类型的空间,new和malloc, delete和free基本类似,不同的地方是:new/delete申请和释放的是单个元素的空间,// new[]和delete[] 申请的是连续空间,而且new在申请空间失败时会抛异
2023-08-18 18:31:11 195
原创 内存管理(1)
int main()//堆上申请空间if (0==p1)return 0;//1、堆上申请空间 2、调用构造函数进行初始化//调用默认构造函数//调用非默认构造函数//申请10个A类型对象的空间,并进行初始化//数组里的对象,先初始化后析构//释放空间free(p1);//1、调用 析构函数 清理对象中资源 2、释放空间delete p2;
2023-08-18 18:27:20 872
原创 explicit关键字 和 static成员
/声明为 static的类成员 称为 类的静态成员, 用static修饰的成员变量,称之为 静态成员变量;用staticx修饰的成员函数,称之为 静态成员函数。//静态成员变量一定要在类外进行定义(初始化)。//对比:普通成员变量在初始化列表进行定义,而静态成员变量必须要在类外进行定义;//性质://1、静态成员为所有 类对象所共享,不属于某个具体的对象,存放在静态区。//2、静态成员变量 必须在 类外定义, 定义时不添加static关键字,类中只是声明。
2023-08-15 11:00:47 200
原创 初始化列表(在构造函数中)
class Timepublic:Time(int hour = 0) //默认构造函数private:int _hour;class Datepublic://要初始化_t 对象,可以在函数体内赋值,但是还是会走初始化列表(调用Time的默认构造)_t = t;Time _t;// a\ 自定义类型成员,一定会用初始化列表进行初始化。
2023-08-14 12:37:29 262
原创 类与对象——赋值运算符重载
/当我们没写赋值运算符重载时,编译会自动生成一个默认赋值运算符重载。(对于内置类型成员变量来说,会逐字节进行赋值;//而对于自定义类型成员变量来说,需要调用它自己的赋值运算符重载完成赋值。) //(这一点与拷贝构造一致) //(1)不需要写的类型:A、日期类(都是内置类型成员变量);B、My Queue类(自定义类型成员变量st1,st2;
2023-08-04 15:18:27 139
原创 类与对象----析构函数
/分析思路:需不需要写析构函数:如果不写,系统自动生成的默认析构函数能否处理;如果默认析构函数无法处理,则就要写。//(1)需要写(默认析构函数无法处理)。动态开辟的资源存储在内置类型成员中的,如果不写析构函数, // 默认析构函数无法对内置类型成员变量处理,就会造成内存泄露。例如:Stack\Queue\List\SeqList\BinaryTree。// (2) 不需要写。(默认析构函数可以处理) //A 日期类(没有类的资源需要清理)。默认析构函数就可以处理,但是没做什么。
2023-08-02 15:45:20 229
原创 类与对象(中--构造函数)
/内置类型:语法自带的,不用定义就可以用的类型,char\int\double\float以及指针(BTNode*)等类型。//自定义类型:需要定义过才可以用的类型,例如:ListNode\BinaryTreeNode等 //特点: //A 内置类型成员变量不做处理 //B 自定义类型成员变量会去调用它(这个自定义类型成员变量)的默认构造函数(如果没有默认构造函数,就无法编译通过)。int _hour;
2023-08-01 10:16:14 58
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人