C++
文章平均质量分 92
记录C++学习历程
核动力C++选手
优秀的猎手要耐心等待机会!
展开
-
【C++】特殊类设计
C++特殊类原创 2024-07-29 07:44:32 · 1002 阅读 · 51 评论 -
【C++】C++的类型的转换
C++类型转换原创 2024-07-29 07:43:06 · 518 阅读 · 11 评论 -
【C++】异常
C++--异常原创 2024-07-26 09:28:13 · 686 阅读 · 13 评论 -
【C++】哈希
哈希原创 2024-07-21 08:51:15 · 1888 阅读 · 11 评论 -
【C++】红黑树模拟实现STL库中的map与set
在上一篇博客中,我们实现了红黑树,但是红黑树节点中的值是形式,这种红黑树适用于map的底层,那么如果我们想要红黑树节点中的值是key的形式(适用于set的底层),我们该怎么搞呢?难道我们只把红黑树节点的类型改一下,其它基本保持不变,再来实现一遍吗?这未免太繁琐了!我们先来看一看stl库中如何实现map和set的:它们貌似用的同样的红黑树实现的,它们的区别在于红黑树的第二个模版参数,一个是key,一个是kv的pair,我们再来看看stl库里怎么实现的rb_tree,原创 2024-07-18 08:05:36 · 773 阅读 · 9 评论 -
【C++】红黑树
enum ColorBLACK,RED, _kv(kv){}在RBTreeNode的构造函数中,我们默认节点为红色,这是为什么呢?反过来想,如果我们默认节点是黑色,当插入这个节点后,会违反性质3,把其他所有路径都得罪了, 后果还是很严重的;如果默认节点是红色,可能会违反性质4,后果轻一些。原创 2024-07-12 13:09:14 · 1471 阅读 · 8 评论 -
【C++】AVL树
/V _val;int _bf;//该节点的右孩子//该节点的右孩子//该节点的父亲在AVL树节点中,_kv表示节点的键值对,_bf是该节点的平衡因子,_left和_right分别是该节点的左右节点,为了不断向上更新节点的平衡因子,需要找到该节点的父亲节点,所以定义了_parent,_parent是该节点的父节点。原创 2024-07-10 09:45:29 · 716 阅读 · 5 评论 -
【C++】map和set
operator[]给一个key,返回key对应value的引用,如果map之前已经有这个key了,那么返回这个key对应value的引用;如果map之前没有这个key,那么这个value相当于一个缺省值。原创 2024-07-03 19:58:23 · 1493 阅读 · 10 评论 -
【C++】二叉搜索树
这部分我们来学习二叉搜索树的概念、操作、实现、应用及性能分析。原创 2024-06-15 10:54:51 · 838 阅读 · 9 评论 -
【C++】多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。在继承中要构成多态还有两个条件1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写重写:要求三同,函数名、参数、返回值需要注意的是,隐藏和重定义的语义是有重叠的,如上图。原创 2024-05-26 20:32:07 · 957 阅读 · 11 评论 -
【C++】继承
C++这种面向对象的语言有三个特点:封装、继承和多态。我们这里对封装的特点做一下总结:封装有两层特点:1.数据和方法放到一起,把想给外面访问的定义成公有,不想给外面访问的定义成保护;2.一个类型放到另一个类型里面,通过typedef和成员函数调整,封装另一个全新的类型继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。原创 2024-04-29 10:05:53 · 1165 阅读 · 10 评论 -
【C++】模版进阶
一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性【缺陷】1. 模板会导致代码膨胀问题,也会导致编译时间变长2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2024-04-23 17:15:22 · 928 阅读 · 15 评论 -
【C++】STL--stack&quene
1.stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。2.stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。3.stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作。原创 2024-04-11 19:48:56 · 757 阅读 · 17 评论 -
【C++】STL--list
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3.与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。原创 2024-04-08 14:50:21 · 541 阅读 · 19 评论 -
【C++】STL--vector
C++中,vector是一个模版,第一个参数是类型T,第二个参数暂且不考虑。我们可以通过上面这句代码将参数T给成int,那么vector中所包含的元素就是int。(重点)1.vector()无参构造(重点)2.vector (const vector& x)拷贝构造构造并初始化n个val使用迭代器进行初始化构造。原创 2024-04-06 15:09:30 · 1265 阅读 · 12 评论 -
【C++】STL--String
可以用。原创 2024-03-14 09:37:25 · 1221 阅读 · 23 评论 -
【C++】模版初阶
class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public:, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表类模板实例化与函数模板实例化不同,原创 2024-02-14 14:08:36 · 1301 阅读 · 22 评论 -
【C++】C/C++内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);//定义自定义类型的数组delete p7;return 0;原创 2024-02-08 14:05:42 · 1042 阅读 · 12 评论 -
【C++】类和对象(3)
内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。关于内部类是一个独立的类,它不属于外部类这句话,我们来验证一下:A类大小是8,而不是12,因此,B不属于外部类。原创 2024-02-07 09:20:36 · 1180 阅读 · 22 评论 -
【C++】类和对象(2)
默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。原创 2024-02-05 08:59:18 · 1146 阅读 · 15 评论 -
【C++】类和对象(1)
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式1. 声明和定义全部放在类体中成员函数名前需要加类名::更推荐采用第二种定义方式!class Datepublic:// 这里的year到底是成员变量,还是函数形参?原创 2024-02-01 11:17:10 · 1277 阅读 · 20 评论 -
【C++】入门
C++入门原创 2024-01-26 16:01:57 · 1157 阅读 · 17 评论