![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 81
海的宇宙
种一棵树最好的时间是十年前,其次是现在
展开
-
c++:数据结构链表list的模拟实现
其实还有另一种解决方法,copy这个类,把这个类改成const版本的.但是这样会造成代码冗余.在调用上,我们假设有一个类A,里面有两个值a1和a2,我们用这个类来充当节点中的数据val。Ref是引用,Ptr是指针.这样子写是为了能生成多种引用T&,和T。这个类里面封装的是节点的指针,所以它唯一的成员变量就是Node。it->是调用it.operator->(),返回的是一个T。这个函数的功能和构造函数一样,写出来是为了后面进行复用.首先T是节点数据的类型,这个没问题.这里的模板有三个参数,为什么呢?原创 2024-04-24 15:16:56 · 1775 阅读 · 0 评论 -
c++:优先级队列(priority queue)使用及底层详解,附带仿函数初步使用
其次在面对商品等复杂类型中,需要我们根据价格,评价,销量等等进行排序时.单靠商品类里面的一个操作符重载小于或者大于是不够的,我们可以写多个仿函数,争对价格,评价等进行比较.首先我们可以自己控制大堆/小堆.2+1,右孩子=父亲节点。原创 2024-05-05 16:17:57 · 759 阅读 · 0 评论 -
c++:刷题必备--容器set的使用.功能:查找,去重和排序.
set的使用其实很简单.它的底层是一个自平衡二叉树,也就是AVL树和红黑树,我们只需要通过中序遍历(左子树 根 右子树)递归下去.根的左子树永远比根的值小,根的右子树永远比根的值大.因为它的底层是一个自平衡二叉树,它本身就是有序的.我们不断的插入值,它就会生成一个二叉树.这个二叉树与其他普通二叉树不一样,查找这个函数跟调用其他函数一样。原创 2024-05-09 23:14:11 · 427 阅读 · 0 评论 -
c++:(map和set的底层简单版本,红黑树和AVL树的基础) 二叉搜索树(BST)底层和模拟实现
二叉搜索树的插入和查找不难,但是它的删除细节很多,分类很细,一不留神容易掉坑里面,面试也经常会考.大家如果不懂的话,要多看几遍.原创 2024-05-10 21:22:40 · 827 阅读 · 3 评论 -
c++:刷题必备 容器map的使用
map的迭代器使用和vector等容器类似.但是因为map里面存储的是键值对,所有打印起来比较麻烦.iterator则返回key值所在的节点的迭代器.我们取得这个迭代器,然后返回value的引用.e相当于键值对的引用.这个的底层和上面类似.只不过在书写方面简单一些.operator[]是map里面内置的最强的函数,在我们刷题时帮助巨大.key是first,value是second,这里是按照存储顺序排列.比如上面Key是string,T是string.原创 2024-05-12 10:56:29 · 1037 阅读 · 0 评论 -
c++数据结构:vector的模拟实现和底层
【代码】c++:vector的模拟实现和底层。原创 2024-04-16 17:59:50 · 588 阅读 · 0 评论 -
c++数据结构:string的模拟实现
private:为了避免和std里面的string起冲突,我们自己搞一个命名空间string本质上来说就是一个字符数组。原创 2024-04-13 17:15:40 · 491 阅读 · 0 评论 -
c++:类和对象中:拷贝构造和赋值运算符重载详解
拷贝构造,顾名思义就是复制.我们把一个已经创建自定义对象初始化创建新对象.赋值运算符重载是把一个对象赋值给另一个对象,二者都是已创建的.比如在Date这个类里面就是Date&.为什么一定要是引用呢?我们都知道,函数的参数是一个形参,我们调用函数传过去的才是实参.而形参是实参的一个拷贝,我们要传值过去就必须创建一个形参.我们传自定义类型Date的值时,因为要拷贝一个新对象,所以就要调用Date类型的拷贝构造.要是拷贝构造里面的参数也是Date的话,就会继续调用它的拷贝构造.如此形成无限递归.原创 2024-03-13 20:25:03 · 1126 阅读 · 0 评论 -
c++: 引用能否替代指针? 详解引用与指针的区别.
新来的小伙伴如果不知道引用是什么?可以看我的上一篇文章1.引用无法改变指向,所以引用无法替代指针,引用只是能在大多数情况下简化我们的代码2.引用在语法上不占地址,指针开空间3.因为引用必须进行初始化,所以引用比指针更安全一些,容易出现野指针,不容易出现野引用4.在sizeof,++等意义不同5.有多级指针,没有多级引用c++祖师爷在设计的时候并不是想用引用替代指针,而是想方便我们的日常工作与学习.二者不是非黑即白,而是相辅相成.原创 2024-03-11 21:53:18 · 1552 阅读 · 0 评论 -
c++:引用&是什么?c++引用详解及使用
我们入住酒店(调用函数,开辟空间),离开酒店(销毁空间),打扫酒店房间(清理空间).但是我们在离开时不小心把行李(变量)遗落在房间里面,我们的行李很有可能被清理走了.当我们再次进入房间(再次访问这个空间),我们会发现自己的行李不见了。我们知道,局部变量c在栈区开辟,出了作用域Add就销毁.ret所接收的是一个已销毁空间的值.编译器在销毁的同时很有可能会清理空间.我们访问的是一片未知的区域.比如齐天大圣是孙悟空的别名,弼马温也是孙悟空的别名.齐天大圣被困在五行山,那么孙悟空有没有被困呢?原创 2024-03-05 16:44:28 · 502 阅读 · 6 评论 -
c++: 缺省参数/默认参数的详解及其应用
int* a;int size;int main()//确定要插入100个//要插入20个//不知道要插入多少个return 0;在我们对栈进行初始化时,如果我们确切知道要开辟的空间的大小,我们可以传具体的值.在我们不知道具体要开辟多大的空间时,我们可以不去管他.直接不传这里可有童鞋要问了,可以直接不管它的大小.等它不够再自己扩容.确实可以,但我们要认识到一点,扩容是有消耗的.原地扩容还好,异地扩容要把所有数据拷贝到新空间里,消耗不小.原创 2024-03-03 18:36:59 · 466 阅读 · 3 评论 -
c++类和对象上:构造函数与析构函数详解与使用
1.一般情况下我们都要写构造函数2.成员变量都是自定义类型或者内置类型给了缺省值可以考虑让编译器自己生成1.对象有动态开辟空间且成员变量为内置类型(指针)需要自己写析构函数.2.成员皆为自定义类型可以不写析构函数。原创 2023-12-27 16:32:43 · 872 阅读 · 10 评论 -
c++: using namespace std是什么意思?命名空间的由来和基本的输入输出
c++: using namespace std是什么意思?命名空间的由来和基本的输入输出.原创 2023-12-21 16:23:57 · 531 阅读 · 4 评论