C++
文章平均质量分 67
Ljw...
这个作者很懒,什么都没留下…
展开
-
红黑树
/枚举//节点颜色RED,BLACK//红黑树节点的定义, _kv(kv){}插入的代码实现检测新节点插入后,红黑树的性质是否造到破坏因为新节点的默认颜色是红色,因此:如果其双亲节点的颜色是黑色,没有违反红黑树任何性质,则不需要调整;但当新插入节点的双亲节点颜色为红色时,就违反了性质三不能有连 在一起的红色节点,此时需要对红黑树分情况来讨论:约定:cur为当前节点,p为父节点,g为祖父节点,u为叔叔节点。原创 2024-08-24 21:39:02 · 1382 阅读 · 12 评论 -
priority_queue的模拟实现
【代码】priority_queue的模拟实现。原创 2024-08-12 09:02:52 · 207 阅读 · 0 评论 -
queue的模拟实现
【代码】queue的模拟实现。原创 2024-08-06 21:19:24 · 87 阅读 · 0 评论 -
C++初阶大总结
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{ }即可,{ }中即为命名空间的成员。1.命名空间中可以定义变量/函数/类型,2.命名空间可以嵌套,3.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。一个工程中的test.h和上面test.cpp中两个N1会被合并成一个,代码例子test.cppint a;int b;int c;int d;test.h。原创 2024-07-30 23:11:25 · 1954 阅读 · 0 评论 -
stack的模拟实现
【代码】stack的模拟实现。原创 2024-07-29 10:17:41 · 293 阅读 · 0 评论 -
list的模拟实现
clear,顺序表vector不需要释放空间,因为没法单独释放一部分空间,而链表list可以。这里的T*也分为const和不带const,所以加上class Ptr。但我们需要的是it++,可以被修改,不被修改的是指向的内容不被修改。(第二个const迭代器,第三个是带不带const的->的重载)这里是const迭代器的关键,返回的*it,就是指向的位置。里面必须加const,因为返回的end()具有常性。原创 2024-07-23 19:01:46 · 2014 阅读 · 31 评论 -
vector的模拟实现
/_start的原来空间已经释放,需要tmp,或者可以提前保存size()的大小,//因为size()返回的是_finish-_start,_start的指向已经变了所以,size()的大小是不确定,// 可以提前存size()的大小,这样就解决了指向改变的问题,可以在if外面,里面也可以,因为扩容才会改变指向。//insert的模拟实现,vector中的insert是用迭代器实现的,库里会返回pos这个位置。//erase的模拟实现,库里会返回删除位置的下一个位置,用的也是迭代器。原创 2024-07-16 18:04:57 · 1834 阅读 · 12 评论 -
string的模拟实现
分情况://resize的模拟实现,可以删除数据,也可以扩容,不缩容,当_capacity为15,_size为10时。//resize(8)就是删除数据(删除两个),resize(12)就是插入数据,resize(18)就是扩容。15find的模拟实现,从pos位置找一个字符,返回下标位置。14erase的模拟实现,pos位置后删除len个字符。12insert的模拟实现,pos位置插入字符串。20resize的模拟实现,可以删除数据。16find的模拟实现,找字符串。30>>的模拟实现,流插。原创 2024-07-09 11:12:33 · 1982 阅读 · 28 评论 -
函数模版和类模版
函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定 类型版本。原创 2024-07-01 15:20:37 · 2286 阅读 · 18 评论 -
日期类的实现
知识点:// 后置++,后置++是先使用后+1,因此需要返回+1之前的旧值,故需在实现时需要先将this保存一份,然后给this + 1。知识点:拷贝构造,内置类型,自定义类型都会处理。默认赋值重载跟拷贝构造一个性质,拷贝构造是定义时,赋值重载是两个已经存在的。知识点:流插入流提取只能写在类外,因为需要两个接收值,要是在类内就会有隐藏的this指针,要用friend,友元函数声明。首先要实现一个获取月份天数的函数,要实现是否是闰年或平年,以及二月份的天数。知识点:日期+=天数,+=改变了自身,*原创 2024-06-30 10:05:33 · 1619 阅读 · 23 评论 -
C++类和对象总结
公共部分(public):这部分包含类的成员函数和可以被外部访问的成员变量(尽管在良好的实践中,成员变量通常被声明为私有的)。public成员可以在任何地方被访问,protected成员只能在类的成员函数和派生类中被访问,而private成员只能在类的成员函数中被访问。在大括号内部,可以定义类的成员变量和成员函数。子类可以添加新的成员变量和成员函数,也可以重写父类的成员函数(通过函数覆盖)。在C++中,类的访问控制是一个重要的特性,它允许程序员定义类的成员(包括成员函数和成员变量)的可见性和可访问性。原创 2024-06-22 11:06:35 · 2239 阅读 · 29 评论 -
this指针小总结
在类的非静态成员函数中,this指针是一个指向调用该函数的对象的指针。注意,this指针是常量指针,你不能改变this指针使其指向其他对象,但你可以改变它所指向的对象的内容。在C++中,this指针只在类的非静态成员函数中存在,而在全局范围内,是没有this指针的。在C++中,this指针是一个隐式的、非静态的成员指针,它指向调用它的对象的地址。每个非静态成员函数都含有一个this指针,该指针在成员函数中用于访问调用它的对象的成员。当成员函数被调用时,this指针被自动绑定到调用该函数的对象的地址上。原创 2024-06-19 12:55:28 · 1473 阅读 · 7 评论 -
C++前期概念(重)
1、基本任何场景都可以引用传参2、谨慎用引用做返回值。出了函数作用域,对象不在了,就不能用引用返回,还在就可以用引用返回引用的读写功能和优点查找和修改改进引用和指针的区别引用和指针的不同点:1. 引用概念上定义一个变量的别名,指针存储一个变量地址。2. 引用在定义时必须初始化,指针没有要求3. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何 一个同类型实体4. 没有NULL引用,但有NULL指针。原创 2024-06-16 12:25:11 · 2656 阅读 · 27 评论 -
C++入门小结
总结来说,C++ 的输入和输出操作是通过流类来实现的,这些流类提供了简单易用的接口来处理数据的不同来源和目标。总结来说,C++ 中的缺省参数提供了一种灵活的方式来为函数定义默认值,使得函数调用更加简洁,同时也支持函数重载和构造函数的灵活使用。6.命名空间与命名遮蔽:如果在命名空间内部定义了一个与全局变量或函数同名的成员,那么在命名空间内部,该全局成员会被遮蔽(隐藏)。总之,C++ 命名空间是一种非常有用的特性,可以帮助开发者组织代码、避免命名冲突,并提高代码的可维护性。5.命名空间的别名:可以使用。原创 2024-06-14 10:16:58 · 1748 阅读 · 10 评论