
C++
文章平均质量分 54
C++学习
流年玄月
初闻不知曲中意,再闻已是曲中人
展开
-
【项目】C++实现高并发内存池
高并发内存池项目的实现原创 2022-08-11 18:51:01 · 3352 阅读 · 4 评论 -
【C++】namespace--命名空间
namespace 其实是一个域,它的作用是解决C语言命名冲突的问题例子:int scanf = 10;scanf("%d", &scanf)原创 2022-05-21 10:24:13 · 243 阅读 · 0 评论 -
【C++】string的遍历
string 类有3种遍历方法:1、按下标打印2、迭代器3、范围for1、按下标打印:正常for循环: //1,下标,可以遍历也可以该 for (size_t i = 0; i < s2.size(); i++) { cout << s2[i] << " "; } cout << endl;2、迭代器: //2,迭代器 string::iterator it = s2.begin(); while (.原创 2022-02-20 15:12:33 · 6011 阅读 · 4 评论 -
【C++】虚函数与多态
上一篇我们留了多继承与虚函数,这次来讲讲,与多态一起协同多继承就是一个子类继承了多个父类,也就是从原来的class C(子类) :public A(父类)变成了--->class C(子类) :public A(父类) , public B(父类)以及菱形继承,菱形继承需要用到虚继承解决本身数据冗余的问题,意识是把多个父类通过虚继承减少所消耗的空间。不过一般不推荐使用菱形继承,感兴趣的小伙伴可以找找相关资料。虚函数是指:被virtual修饰的成员函数,一般父类中拥有一个成员函数原创 2022-04-11 14:58:09 · 789 阅读 · 0 评论 -
【C++】AVL树--平衡搜索树
为什么要用到平衡二叉树: 我们都知道,普通的搜索树在良好的情况下,是一个类似于完全二叉树的树状结构,它所用到的时间复杂度为 O(logN),也就是高度次,但是难免有遇到极端场景,树状就退化成了单支树,这时的时间复杂度就变成了 O(N),严重影响了效率。为了提升效率,让搜索树的时间复杂度达到 O(logN),我们需要使得搜索树达到高度平衡的状态,于是发明了 AVL树,从而达到近似平衡。AVL树的性质:AVL树有以下性质:·左右子树都是AVL树·左右子树的...原创 2022-05-01 21:13:55 · 1129 阅读 · 0 评论 -
【C++】string 的底层实现
首先string的内置成员有:char* _str;size_t _size;size_t _capacity;static const size_t npos;实现的原理有:构造函数: string(const char* str = ""){ _size = strlen(str); _capacity = _size; _str = new char[_capacity + 1]; strcpy(_str, str);}原创 2022-03-03 21:34:53 · 1706 阅读 · 3 评论 -
【C++】malloc/free 和 new/delete 的区别
共同点:malloc 和 new 都是需要在堆上申请空间,且最后需要释放掉,new 只是在 malloc 的基础上初始化了。不同点:1、malloc 和 free 都是函数,而 new 、delete 是类的操作符;2、malloc 申请空间后需要手动初始化,而 new 不用;3、malloc 需要手动计算申请空间的大小,而 new 只用 类型+[大小]即可;4、malloc 在申请时是 void* 类型,需要强转,new + 类型;5、malloc 空间申请失败时返回 .原创 2022-02-22 22:50:14 · 489 阅读 · 0 评论 -
【C++】二叉搜索树之--红黑树
红黑树,是二叉搜索树的一种,它的每个节点只有红色和黑色,从而达到接近平衡的目的。红黑树的性质:·根节点都是黑色节点·每个节点不是黑的就是红的·如果一个节点是红的,那么它的两个孩子都是黑的·不能右两个连续的红色节点·每条路径下,黑色节点的数量都是相等的·叶子节点都是黑色节点(这里指空节点)·根节点到叶子节点最长的路径,最多是最短路径的2倍(最短路径都是黑子,最长路径是一黑一红)红黑树的原理:和AVL树不一样的是,没有平衡因子,而是节点的结构体中添...原创 2022-05-02 09:56:12 · 943 阅读 · 0 评论 -
【C++】哈希概念、哈希表的实现和运用
为什么会产生哈希的概念:给一个常见的数组 { 501 , 502 , 503 , 504 , 505 ... 1000 } ,为了节省空间,一般采用通过相对映射的方式开辟空间,也就是开 500 的空间 ,0 对应 501 ,1 对应 502 ... ,如果要在数组里搜索一个数,它所用到的时间是 O(N),几千几万个数据还好,但是上亿万个数据遇到极端情况就得搜索上亿万次,人们认为所用时间太长了,于是想到一个巧妙的方法,根据一个数组的数量决定它需要开辟的空间,再把其中的值 % 取模,把模后的值填进对应的.原创 2022-05-03 12:06:12 · 958 阅读 · 0 评论 -
【C++】继承
假设我们有一个对象person,里面的成员变量有个整型age,再创建一个对象student,成员变量是char类型的_name。继承的意思就是在person的基础上,再添加其他的成员,不改变person的成员变量,在一个新的对象里,不仅包含了person的成员,也加上自己的成员变量,从而达到继承的效果。这里的person对象称之为“父类”,而student称之为“子类”。我们可以理解为,儿子继承了爸爸的财产,再发扬光大,获得了爸爸没有的东西,当然,儿子也可以在某一地方选择低调,拥有而不显示。原创 2022-04-08 20:22:45 · 1131 阅读 · 0 评论