C++
文章平均质量分 90
盘大man
这个作者很懒,什么都没留下…
展开
-
C++----模板进阶
模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生。增强了代码的灵活性。模板会导致代码膨胀问题,也会导致编译时间变长。出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2023-10-28 18:22:39 · 157 阅读 · 0 评论 -
C++STL----priority_queue的使用与模拟实现
priority_queue(优先队列)是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。标准容器类vector和deque满足这些需求。原创 2023-10-27 16:48:33 · 98 阅读 · 0 评论 -
C++STL----Stack&Queue的模拟实现
原理介绍deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;与list比较,空间利用率比较高。deque并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际deque类似于一个动态的二维数组双端队列底层是一段假象的连续空间,实际是分段连续的,为了维护其“整体连续”以及随机访问的假象,落在了deque的迭代器身上deque是如何借助其迭代器维护其假想连续的结构呢?原创 2023-10-27 14:26:30 · 95 阅读 · 0 评论 -
C++STL----Stack&Queue的使用
stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。默认情况下,如果没有为stack指定特定的底层容器,默认情况下使用deque。队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。原创 2023-10-27 11:26:11 · 67 阅读 · 0 评论 -
C++STL----list的模拟实现
list迭代器类,实际上就是对结点指针进行了封装,对其各种运算符进行了重载,使得结点指针的各种行为看起来和普通指针一样。(例如,对结点指针自增就能指向下一个结点)原创 2023-10-26 19:50:30 · 370 阅读 · 0 评论 -
C++STL----list的使用
list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是带头双向链表,带头双向链表中每个元素存储在独立结点当中,在结点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似,最主要的不同在于forward_list是单链表,只能进行单方向迭代。与其他容器相比,list通常在任意位置进行插入、删除元素的执行效率更高。原创 2023-10-26 14:14:24 · 364 阅读 · 0 评论 -
C++STL----vector的模拟实现
当vector存储的数据是**内置类型或无需进行深拷贝的自定义类型**时,可以使用memcpy函数拷贝当vector存储的数据是**需要进行深拷贝的自定义类型**时,就不能使用memcpy函数拷贝了原创 2023-10-19 21:49:17 · 29 阅读 · 0 评论 -
C++STL----vector详解
vector是表示可变大小数组的序列容器。与数组类似,vector也采用的连续存储空间来存储元素。可以采用下标对vector的元素进行访问。vector的大小是可以动态改变的,而且它的大小会被容器自动处理。当vector需要重新分配大小时,其做法是,分配一个新的数组,然后将全部元素移到这个数组当中,并释放原来的数组空间。vector分配空间策略:vector会分配一些额外的空间以适应可能的增长,因此存储空间比实际需要的存储空间一般更大。原创 2023-10-19 16:33:34 · 25 阅读 · 0 评论 -
C++STL----string类的模拟实现
此时我们将从find函数接收到的值镜面对称后,得到的是待查找字符串的最后一个字符在对象C字符串中的位置,而我们需要返回的是待查找字符串在对象C字符串中的第一个字符的位置,所以还需做进一步调整后才能作为rfind函数的返回值返回。因为拷贝对象的_str与源对象的_str指向的并不是同一块空间,所以拷贝出来的对象与源对象是互相独立的。尾插前需要判断当前字符串的空间能否容纳下尾插后的字符串,若不能,则需要先进行增容,然后再将待尾插的字符串尾插到对象的后方。其中一个对象的改动会对另一个对象造成影响。原创 2023-10-13 21:32:20 · 41 阅读 · 0 评论 -
C++STL----string类
使用>>进行输入操作时,当>>读取到空格便会停止读取,基于此,我们将不能用>>将一串含有空格的字符串读入到string对象中。:若给出的n大于对象当前的capacity,则capacity也会根据自己的增长规则进行扩大。:由于浮点数不能在内存中精确保存,故转换为字符串时,可能小数点后面的数有偏差。空字符串中并不是什么都没有,其中存在一个’\0’字符;原创 2023-10-12 12:15:27 · 39 阅读 · 0 评论 -
C++基础----模板初阶
class 类模板名// 类内成员定义实例:用c++实现栈public:, _top(0)_top = 0;//c++中使用new扩容//1.开新空间 2.拷贝数据 3.释放旧空间if (_next)_top++;注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。原创 2023-10-05 11:25:12 · 42 阅读 · 0 评论 -
C++基础----内存管理
new和delete的用法//malloc:在堆上申请内存空间//失败返回NULL,故malloc需要检查返回值//释放空间free(p1);//new :1.先在堆上申请内存空间 2.再调用默认构造函数初始化//new 失败不需要检查返回值,失败抛异常//没有默认构造函数的情况下,程序编译会报错//但可通过手动传参,使对象初始化。原创 2023-10-04 20:15:55 · 33 阅读 · 0 评论 -
C++基础----类和对象(三)
的。原创 2023-09-04 12:19:26 · 28 阅读 · 0 评论 -
C++基础----类和对象(二)
拷贝构造函数特征前置++和后置++重载赋值运算符重载格式 参数类型:const T&,传递引用可以提高传参效率 返回值类型:T&,返回引用可以提高返回的效率,有返回值目的是为了支持连续赋值 检测是否自己给自己赋值 返回this :要复合连续赋值的含义总结原创 2023-09-04 12:08:38 · 23 阅读 · 0 评论 -
C++基础----类和对象(一)
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加本章只是类和对象中的一些基础知识,主要是对类和对象的一些了解和一些重要知识的剖析,对于类和对象的熟练使用还需要再学习后面的知识,然后多刷题才是重中之重!原创 2023-09-04 11:50:36 · 41 阅读 · 0 评论 -
C++基础----入门
本章只是对C++入门基础知识的大概了解,有些基础知识需要后面的知识才能理解。本章重点为C++的一些基础语法以及引用的概念,使用等。原创 2023-06-30 21:45:48 · 36 阅读 · 0 评论