
C++
文章平均质量分 88
类和对象,C&C++内存管理, 模版,STL,string,vector,list等等
芒果329
这个作者很懒,什么都没留下…
展开
-
【C++第十六课 - C++11】列表初始化、右值引用、移动构造、移动赋值、lambda表达式
使用初始化列表时,可添加等号(=),也可不添加。原创 2024-12-27 15:21:56 · 843 阅读 · 0 评论 -
【C++第十四课-map和set】set和multiset的用法、map和multimap的用法、底层结构(AVL树、红黑树)、哈希
之前学的都只是存储数据在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、forward_list(C++11)等,这些容器统称为,因为其底层为线性序列的数据结构,里面存储的是元素本身。那什么是关联式容器?它与序列式容器有什么区别关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是结构的键值对,在数据检索时比序列式容器效率更高set – k模型map – kv模型。原创 2024-09-09 16:38:56 · 902 阅读 · 0 评论 -
【C++第十三课-二叉树进阶】二叉搜索树
商场的车库:进去是都可以进,出去的时候需要通过车牌号快速查找你停入的时间,判断是否超过半个小时。上面这个拷贝构造是我自己写的,虽然根据树1深拷贝了树2,但是没法给树2的_root。快速通过一个值(key)查找另一个值(value)是否存在?若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。小区内部车库:进出都有快速查看你的车牌号是否是小区住户。:找一个能替换我的节点,交换值,转换删除他。上面这个方法不好,例如当树很深的时候。原创 2024-08-28 15:47:03 · 382 阅读 · 0 评论 -
【C++第十二课-多态】多态概念、多态原理
普通函数的继承是一种实现继承,派生类继承了基类函数,可以使用函数,继承的是函数的实现。虚函数的继承是一种接口继承,派生类继承的是基类虚函数的接口,目的是为了重写,达成多态,继承的是接口。. 动态绑定又称后期绑定(晚绑定),是在程序运行期间,根据具体拿到的类型确定程序的具体行为,调用具体的函数,也称为动态多态。:运行时去指向对象的虚函数表中找函数的地址,进行调用,所以指向父类调的是父类虚函数,指向子类调用的是子类虚函数。父类的指针或引用去调用虚函数,传的是父类掉父类的,传子类掉子类的(切片)原创 2024-08-15 14:52:46 · 884 阅读 · 0 评论 -
【C++第十课 - stack_queue】stack、queue的使用、适配器模型stack、queue和priority_queue的底层实现、deque
第二种情况:如果栈为空或栈顶元素与popV当前的出栈元素不一样,将pushV当前入栈元素压入栈中,pushV向后移一位。由容器(string、vector、list、deque)封装、转换而成的,底层数据的管理不是由自己负责的。(1)如果pushV当前入栈的值和popV当前出栈的值一样,pushV向后移一位,popV向后移一位。如果第一个buff不是从头开始的,不在第一个buff,那么i -= 第一个buff的数据个数。(2)如果pushV当前入栈的值和popV当前出栈的值不一样,分两种情况。原创 2024-07-07 19:01:32 · 937 阅读 · 0 评论 -
【C++第十课 - List】List的使用、list底层实现、list的const迭代器实现、反向迭代器
list不能用算法库里面的sort,算法库里面的sort是快排(需要连续的空间,原地排序,不稳地排序,O(n2)),list自带的sort是归并(稳定排序,O(nlogn))(2)访问权限:struct默认的成员变量访问控制权限是public,而class默认的成员变量访问权限则为private。把一个链表的值转移到另一个链表,是把一个链接里面的节点直接拿走。是内置类型,是要改变的是Node*的指向,不能改变指针的运算符。默认的析构函数对类里面的成员是不做处理的。原创 2024-06-19 10:38:11 · 1235 阅读 · 0 评论 -
【C++第九课 - vector】vector介绍、vector使用,vector的底层实现、杨辉三角、全排列、只出现一次的数字
就是顺序表string类是一个保存字符的动态数组,由于其中有一个接口c_str,转化成c语言的字符串,要以\0结尾,所以string类最后会有一个\0.string支持+=string支持比较大小(通过ascii码)vector是一个保存T类型的动态数组,vector也是保存字符的动态数组,但是,不会以\0结尾,不保存\0.vector不支持+=vector不支持比较大小(也可以通过ascii码比较,但意义不大)原创 2024-06-09 11:02:02 · 811 阅读 · 0 评论 -
【C++第八课 - string的底层实现】
1、不认识官方库的内容(1)没包头文件(2)命名空间的问题2、缺省参数只能在声明给,不能声明定义同时给3、重定义问题所以的重定义都是由于在多个cpp里面定义导致的。原创 2024-05-05 10:05:16 · 723 阅读 · 0 评论 -
【C++第七课-string用法】
basic_string是一个类模板string本质上是basic_string < char >,也就是管理char的,字符数组。原创 2024-05-03 17:00:57 · 1071 阅读 · 1 评论 -
【C++第六课 - 模板、STL简介、string】函数模板、类模板、STL简介
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。C++标准库还包括:IO流库、智能指针库、异常相关的库。容器:数据结构空间配置器:内存池,专门给数据结构提供内存,数据结构需要内存的时候不是去new,而是找内存池配接器:又叫适配器。原创 2024-04-29 11:54:43 · 379 阅读 · 0 评论 -
【C++第五课-C/C++内存管理】C/C++的内存分布、new/delete、new和delete的实现原理
malloc不方便解决动态申请的自定义类型对象的初始化问题new:1、开空间;2、调用构造函数delete:析构函数 + 释放空间。原创 2024-03-30 14:11:22 · 868 阅读 · 0 评论 -
【C++第四课-类和对象下】初始化列表、静态成员函数、静态成员变量、explicit关键字(隐式类型转换)、友元函数、友元类、内部类、编译器的常见优化
因为B在A 里面是public,所以在外面是可以访问的,但如果B在A的里面是private,那么B这个类只能在A 类里面去访问,外面的不能访问。给的是缺省值,这样即使没有显示的在初始化列表中定义,_year也不会被初始化成随机值,而是初始化成1。此时A这个类有默认构造函数(即不需要参数的构造函数),那么对于_aa不需要显示的写定义,他就会自动去调用它的默认构造函数。不能在类声明的时候给缺省值,因为塔不走初始化列表,缺失值是给初始化列表的。B是A的友元,B能访问A 的成员,A不能访问B的成员。原创 2024-03-10 11:43:34 · 1027 阅读 · 0 评论 -
【C++第三课 - 类和对象中】构造函数、析构函数、拷贝构造函数、赋值重载、取地址重载、Date类的完善、const成员
Date、MyQueue可以不用写,默认生成的operator=就可以用赋值重载:(重载运算符)两个已经存在的对象拷贝拷贝构造:一个已经存在的对象去拷贝初始化另一个对象。原创 2024-03-04 20:57:33 · 994 阅读 · 0 评论 -
【C++第二课 - 类和对象上 - 入门知识】struct类、class类、访问限定符、this指针
C++在C语言的基础上将struct升级成了类1、struct使用上的升级,不用typedef就可以直接用类名,类名就是类型int* a;int top;return 0;2、类里面可以定义函数int* a;int top;top = 0;s1.Init();s1.Push(1);s1.Push(2);return 0;C++更喜欢用class定义类。原创 2024-01-21 19:09:15 · 946 阅读 · 0 评论 -
【C++第一课 - C++入门】相关软件(vs、gitee)、命名空间、输入输出流、缺省参数、函数重载、引用、内联函数、auto、范围for(语法糖)、nullptr
:域作用限定符zyh命名空间中的rand也是全局变量对于一些常用的,例如:cout、endl,每次用都得前面加上std::很麻烦,但直接展开std又比较危险## Stack实例>同一个项目中,多个文件的同一个命名空间会被合并```cppstack.hint* a;int top;}SK;return 0;原创 2024-01-20 20:26:37 · 1129 阅读 · 0 评论 -
C++继承
继承,菱形继承原创 2023-03-01 20:27:31 · 176 阅读 · 0 评论 -
模板初阶(函数模板、类模板)
函数模板、类模板原创 2023-02-23 23:02:14 · 80 阅读 · 0 评论 -
C/C++内存管理(new、delete)
c++内存管理、new、delete原创 2023-02-22 23:20:40 · 305 阅读 · 0 评论 -
类和对象(下)(初始化列表,explicit关键字,静态成员变量,静态成员函数)
初始化列表、explicit关键字,静态成员函数,静态成员变量原创 2023-02-20 08:02:15 · 95 阅读 · 0 评论 -
类和对象(中)(构造函数、析构函数、拷贝构造、运算符重载、日期类)
类和对象的六个默认成员函数(构造函数、析构函数、拷贝构造、运算符重载...),流提取,流插入,日期类原创 2023-02-18 21:15:22 · 129 阅读 · 0 评论 -
类和对象(上)(类的定义、访问限定符、作用域、实例化、this指针)
1、定义类的关键字:class、struct (class 类里面默认私有,struct类里面默认私有)2、类的成员:类中的内容称为类的成员(a.成员变量 b.成员函数)//类体:由成员函数和成员变量组成 };//注意后面一定写分号 struct structName {//类体:由成员函数和成员变量组成 };//注意后面一定写分号2、类的两种定义方式a.声明和定义全部都放在类体中(成员函数如果放在类体中定义,编译器可能会把其当作内联函数处理)原创 2023-02-17 23:27:23 · 98 阅读 · 0 评论 -
C++入门
命名空间、函数重载、确实参数原创 2023-02-16 11:56:08 · 66 阅读 · 0 评论 -
函数重载--深度解剖【C++】
什么是函数重载?对于函数重载,简单来说有点类似一词多义。自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了。比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心。一个是乒乓球,一个是男足。前者是“谁也赢不了!”,后者是“谁也赢不了!”...原创 2023-02-03 10:30:36 · 71 阅读 · 0 评论 -
C++引用(引用的特性,常引用,引用的使用场景)
C++引用原创 2023-02-02 10:45:28 · 381 阅读 · 2 评论