![](https://img-blog.csdnimg.cn/80d4cb5a9fba4b52846f52112fb2ea39.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CPP
文章平均质量分 87
学习C++的基础语法,用C++实现高级的数据结构
GracefulBlack
持续更新,你的点赞就是我更新的最大动力
展开
-
多线程的理解
线程,线程和进程的关系,生产消费模型,线程的接口,生产消费模型,单例模型,线程安全可重入概念,自旋锁原创 2022-08-18 09:54:20 · 313 阅读 · 0 评论 -
特殊类的设计
在堆上创建对象,在栈上创建对象,设计不能继承的类,单例模式,迭代器模式...原创 2022-08-11 09:04:54 · 127 阅读 · 0 评论 -
C++11
lambda表达式,列表初始化,右值引用移动语义等,线程库,智能指针等原创 2022-08-10 14:48:40 · 73 阅读 · 0 评论 -
异常的了解
C++的异常如何使用,处理错误,C++处理异常体系,优缺点原创 2022-08-10 07:38:29 · 64 阅读 · 0 评论 -
哈希(解决哈希冲突,封装map/set,哈希的应用{位图/布隆过滤器})
C++哈希的内容原创 2022-07-11 22:02:40 · 401 阅读 · 0 评论 -
map 和 set
map和set容器:序列式容器:vector,list… (其中栈和队列不算是序列式,属于的是适配器)关联式容器:map和set(底层是平衡搜索树)…set的底层是搜索树set就是key的模型,判断在不在官网看set模板声明(内有仿函数,空间配置器)序列式容器一般使用的是push和pop,关联式容器一般使用insert和erase遍历set:迭代器 和 范围for(我们知道底层,其实范围for的底层也就是迭代器)迭代器左闭右开遍历的过程看起来和序列式容器类似,但是底层其实已经千差万别了原创 2022-07-09 13:54:49 · 131 阅读 · 0 评论 -
AVL树的理解和实现
AVL树,也叫高度平衡二叉搜索树左右子树都是AVL树左右子树高度差(简称平衡因子)的绝对值不超过1(-1/0/1)平衡因子 = 右子树高度 - 左子树高度AVL树不一定需要平衡因子使用平衡因子是一种控制实现方式三叉链存储,有一对pair和平衡因子插入有一个parent,有一个cur插入的是三叉链,parent也要指怎么知道平衡不平衡新插入的 平衡因子一定是0插入在父节点的右边,父节点的平衡因子+1;插入在左边,父节点平衡因子-1cur是新增结点,它只会影响cur节点的平衡因子控制原创 2022-05-29 23:39:15 · 124 阅读 · 0 评论 -
继承和多态
一 .继承1 .继承的本质继承的本质是复用,继承是类设计层次的复用基类/父类(大家都有的信息提取到一个类中)子类/派生类定义格式 class Student(派生类) : public(继承方式) Person(基类)基类private成员在派生类中无论什么方法继承都是不可见的,语法上限制派生类对象在类里和类外都不能访问它保护和私有在父类中没有区别在子类中,private成员不可见,protected是可见的实际中一般都是使用public继承,几乎很少使用private和protected原创 2022-05-08 09:22:22 · 302 阅读 · 0 评论 -
IO流(C语言,C++)
IO流linux下叫终端,VS下叫控制台一张继承图,cin是istream的对象,cout是ostream的对象cin>> ->cin.operator>>()cin比scanf慢的原因是底层封装太多,做的太笼杂了,跟编译没有关系cin是如何做到连续的输入多个数?多个函数调用,返回值有关真正的优势是,cin,cout可以重载自己想要的类型1 .operator bool()OJ多种输入,while(cin>>str){}C语言while(scan原创 2022-05-03 17:34:02 · 775 阅读 · 0 评论 -
vector
vector的本质是一种顺序表,难度不大,但需要我们重点掌握1 .vector的初始化方式#pragma once#include<cstdio>#include<vector>#include<iostream>using namespace std;int main() { vector<int> v1; vector<int> v2(10, 8);//初始化10个8 vector<int> v3(++v2.b原创 2022-04-12 22:56:01 · 148 阅读 · 0 评论 -
STL -- String
预学先知1.STL的六大组件,容器,算法,迭代器最为重要,allocator就是个内存池2.STL是学习C++中一个很重要的方面,需要认真对待。“没有学过STL就不要说自己学过C++”; 三个境界:能用,明理,能扩展3 .辅助学习的网站www.cplusplus.com4.几个编码表ascii – 表示英文编码表unicode – 表示全世界文字编码表 utf-8 utf-16 utf-32gbk --中文自己量身定做的编码表Linux上一般设置utf-8根据编码的不同,也有不同的方式进原创 2022-03-29 16:08:26 · 1302 阅读 · 0 评论 -
模板 ---模板进阶
模板一般分为函数模板和类模板函数模板#include<iostream>#include<cstdio>using namespace std;template<class T>void Swap(T& a, T& b) { T t = a; a = b; b = t;}int main() { int a1 = 1, a2 = 2; Swap(a1, a2); cout << a1 << "原创 2022-02-28 13:35:27 · 111 阅读 · 0 评论 -
C++内存管理
预学先知1.C/C++内存空间的划分函数调用建立栈帧 形参,局部变量等等语言语法命名角度,数据段就是静态区,代码段就是常量区堆:程序运行中按需求,申请和释放空间,比如在实现链表32位程序,栈一般是8M,静态区常量区不大,堆很大(2G左右)2 . 死循环会爆掉程序吗?不会。该程序一直会消耗cpu但不会消耗空间3 .分析哪些数据属于哪个程序答案是(横着看):CCCAAAAADABchar2是一个数组,会在栈上开5byte(有\0)空间,把数据段的数据拷贝过去*char2 ,ch原创 2022-02-21 10:34:51 · 458 阅读 · 0 评论 -
类和对象【超详细】
预学先知①面向对象和面向过程的初步认识C语言是面向过程,关注的是过程,分析步骤,利用函数调用解决问题C++是基于面向对象的,关注的是对象,将一件事拆成不同的对象,靠对象的交互完成例子:设计一个快递系统面向过程:关注实现下单,信息整合,送单的过程,体现到代码–方法/函数面向对象:关注实现类对象及类对象之间的关系,快递员,商家,用户之间的关系 --类的设计及类之间的关系②C++是基于面向对象:面向过程和面向对象混编。原因:C++兼容C然而JAVA是纯面向对象:只有面向对象③C++对结构体进原创 2022-02-14 16:09:45 · 373 阅读 · 0 评论 -
c++基础
学习一门新的语言,我们总体上要学习一下它的关键字1.C++关键字慢工出细活,不要求上来就全部掌握,在学习前看一下总体做到心中有数C++兼容C的特性2.namespace关键字为什么要提出这个关键字?因为C语言无法解决命名冲突问题①我们自己定义的变量和函数可能比库里面的变量重名冲突②当做到代码量比较大的项目的时候,队里两个人写的代码会产生命名冲突namespace域全局和局部同时的情况下,首先在局部找,再去全局找#include<iostream>#include<原创 2022-02-03 00:43:50 · 110 阅读 · 0 评论