![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 83
Gong_Jason.
这个作者很懒,什么都没留下…
展开
-
map和set
set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。set在底层是用二叉搜索树(红黑树)实现的。原创 2023-11-06 11:54:38 · 21 阅读 · 0 评论 -
c++二叉搜索树
和普通二叉树一样,一个节点有左子树和右子树,还有key值,因为存在了自定义类型,所以需要使用初始化列表去初始化该Node节点。这边的引用就是代表了上一个节点的位置去插入 ,所以只需要指向到需要插入的位置,递归能自动帮我们生成插入并返回。1 .若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。2. 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。解决该key在不在二叉树中的问题,如校园卡,该学生号在不在系统中。b. 树不空,按二叉搜索树性质查找插入位置,插入新节点。原创 2023-11-02 11:03:54 · 27 阅读 · 0 评论 -
c++多态
因为虚函数的必要条件是调用父类的指针或者引用,所以父子类各自都有自己的虚表,父类的虚函数要调用父类的虚表,子类的虚函数要调用子类的虚表,如果不是引用或者指针,那么传值的时候就会子类对象的虚函数值传给父类,就会造成传值覆盖,如果传的是引用或者指针,那么就会进行切割,子调用子的,父调用父的。派生类的虚表需要生成一张新的虚表,那么就需要重写,覆盖成新的虚函数,如果不需要重写的那么就拷贝相同的地址。虚函数的继承是一种接口继承,派生类继承的是基类虚函数的接口,目的是为了重写,达成。多态,继承的是接口。原创 2023-10-24 22:57:15 · 27 阅读 · 0 评论 -
string模拟实现
append在逻辑上是和push_back相同的,一个是打印的字符,一个是打印的字符串,首先要给出str的长度,这里的if判断中的reserve不能是扩二倍的关系,因为len的长度有可能远远的大于2*capacity,假如len的长度是10,而capacity的长度是3,capacity即使扩了二倍也无法满足所需要的。str为空或者不设置变量的时候,在初始化的时候我们不能将指针指向空,指向空是一个大坑,因为即使是空的时候,我们识别字符串的时候需要指向\0结束,指向空就无法识别出什么时候结束。原创 2023-09-16 15:29:46 · 54 阅读 · 1 评论 -
函数重载,引用,内联函数,c++新关键字
首先编译器里面有一个叫符号表的东西去存储函数名,本质是同样的函数名转换成两句指令,如果类型不同修饰出来的名不同,返回值不同也不能构成函数重载,先不谈编译能否通过,在符号表翻译成的代码就不一样,名字不一样自然不能构成函数重载了。在使用了引用的情况下,相当于给原链表娶了给别名,不需要取地址了,看上去更加简单。test.cpp中预处理首先是头文件展开,宏替换,去掉注释,条件编译。只有声明没有定义就可能找不到,c语言直接用函数名去,c++用的修饰名。全局对象or静态对象or堆上动态,出了作用域还在,提高效率,原创 2023-07-18 22:02:41 · 40 阅读 · 1 评论