
C++
文章平均质量分 67
日常学习心得总结知识回顾
我叫刘十三
这个作者很懒,什么都没留下…
展开
-
关于map和set你所必须要了解的关键点
map和set以及multiset与multimap set特点 set是按照一定次序存储元素的容器 在set中,元素的value也标识它,key和value是一样的,每个value是惟一的,set中的元素不能在容器中修改,但是可以从容器中插入或删除他们 在内部,set中的元素总是按照特定的排序准则进行排序 set容器通过key访问单个元素的速度通常比unordered_set容器慢,但是他们允许根据顺序对子集进行直接迭代 set在底层是用二叉搜索树(红黑树)实现的 注意要点 与map和multima原创 2021-07-17 17:16:19 · 183 阅读 · 0 评论 -
大小端字节序
大小端字节序 什么是大小端字节序 大端字节序:高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 小端字节序:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 举个列子: 如果对&1进行强转char*,那么返回的首元素是在低地址处取得的,如果低地址取得值和低位的值相等则是小端字节序 #include<iostream> using namespace std; //判断大小端字节序 //1.指针强转 &1=0x00000001 01在低位 *s取得值是原创 2021-03-14 16:06:03 · 343 阅读 · 0 评论 -
deque实现栈和队列
栈和队列的模拟实现 deque双端队列 deque双端队列是一种双开口的 “连续” 空间的数据结构,双开口意思是可以在头尾两端进行插入和删除的操作,且时间复杂度为O(1),与vector相比,头插效率高,不用搬移元素,与list相比,空间利用率高 其实双端队列deque并不是连续的空间,他的底层类似于一个动态的二维数组。 deque的缺陷 虽然双端队列与vector相比,不需要搬运大量的数据,效率比较高,在扩容时也不需要搬运大量的元素,与list相比,空间利用率高,不需要存储额外的字段。 但是,que原创 2021-02-24 16:11:39 · 1036 阅读 · 0 评论 -
友元类与内部类
友元与内部类 友元分为友元函数和友元类 友元是一种突破了封装的方式,有时候为了方便使用友元类,但是友元破坏了封装性,一般不会多用。 友元函数可以直接访问类的私有成员,它是不属于类的内部,它是类外部的普通函数,不属于任何类,但是需要在类内部声明,声明时需要加friend关键字。 class Date { friend ostream& operator<<(ostream& _cout, const Date& d); friend istream& ope原创 2021-02-20 19:54:28 · 382 阅读 · 0 评论 -
函数重载、引用与指针、内联函数
函数重载 函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。 函数的返回值不能作为判断函数是否为重载函数,因为如果两个函数参数列表数据类型一模一样,只有返回值类型不一致,那么编译器在传参的时候不知道传递给哪一个函数,因为结果是未知的,所以函数重载不能以返回值类型作为判断条件。 注意:通过C语言无法完成函数重载,而C++却可以,是因为C++是通过函数修饰规则来区分重载函原创 2021-02-19 16:13:39 · 250 阅读 · 0 评论 -
c++之priority_queue实现
priority_queue(优先级队列) 优先级队列的定义:优先级队列 是不同于先进先出队列的另一种队列。每次从队列中取出的是具有最高优先权的元素。 实现原理:优先级队列默认的容器一般采用STL中的vector容器。因为vector具有高效的连续存储的效率,它的随机访问 的效率比较高,当然也可以采用stack或者dequeue,其它本身是一个堆的结构,默认条件下生成大堆 == 注意:优先级队列的实现的底层容器,默认采用vector,也可以采用dequeue,只是vector的随机访问效率较高,切记!!原创 2020-11-27 18:00:54 · 1366 阅读 · 0 评论 -
vector的模拟实现
vector的模拟实现 最近学习了vector的使用,下面对vctor进行了模拟实现, 如有不足请指出: #include<iostream> #include<assert.h> #include<vector> using namespace std; template<class T> class Vector { public: Vector() :_start(nullptr) ,_finish(nullptr) ,_endOf原创 2020-11-19 10:53:59 · 161 阅读 · 2 评论 -
C++之String类的实现
String类的具体实现源码 #include<iostream> #include<string> #include<assert.h> using namespace std; class String { friend ostream& operator<<(ostream& _cout, const String& s) { for (int i = 0; i < s.size();原创 2020-11-14 17:58:35 · 220 阅读 · 0 评论 -
C++模板使用
C++模板的使用 在c++中我们有时候会遇到需要我们写很多结构类似的代码段,为了减小我们的代码量,聪明的程序员们就想出了一种 可以减小代码量的方法,当遇到相同结构的代码段时,我们制造一个模板,通过一个泛型来代替所有类型,所谓模板, 就是编译器自动根据所给的类型自动生成想要的类型 函数模板 函数模板不是一个单纯的函数,它代表的是一个家族,与类型无关,在使用时函数模板会根据参数的类型生成与之对应的函数版本。 在上图中,template表示的是泛型模板,class代表的类,也可以用typename替代clas原创 2020-11-03 16:07:24 · 253 阅读 · 0 评论