logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

容器讲解之set和map

C++中的set用来存储非重复(唯一)元素,并按照默认升序自动排序。set的底层是红黑树,查找、删除、插入的效率都很高(logN)。map和set一样底层都是红黑树,但与set不同的是,map存储键值对,即每个元素包含两个部分:一个键(key)和一个值(value)。同样不能出现重复的键(key)、默认升序(排序改变方法和set一样)、不能直接修改建(key),如果需要修改应先删除再插入。

文章图片
#开发语言#c++
C++语法之--多态

首先,多态分为静态多态和动态多态之分。静态多态主要就是之前讲过的重载和函数模板,它们在编译的时候就完成参数的分别匹配。动态多态具体点就是去完成某个行为(函数),可以传不同的就会完成不同的行为,就达到多种形态。

#c++#开发语言
C++之二叉搜索树

上图就是个二叉搜索树,所谓二叉搜索树必须满足以下条件:1、左子树的值在非空的情况下必须比根节点要小,右子树的值在非空的情况下必须比根节点要大。2、左右子树也都是二叉搜索树。3、二叉搜索树可以用来存储重复的数据,具体的使用要结合实际场景。二叉搜索树在普通场景下的查找效率比较高(logN),但需要注意极端场景:上图依旧符合二叉搜索树的定义,但是该极端情况下的查找效率增长为O(N)。二叉搜索树中的每一个

文章图片
#c++#开发语言
C++之AVL树的简单实现

AVL树是一个自平衡二叉树,其满足任意节点的左右子树高度差(称为 “平衡因子”)的绝对值 ≤ 1。平衡因子=右子树高度-左子树高度。(当然也可以是左子树高度-右子树高度,这里用右-左讲解通过平衡因子的约束,AVL树能够有效维持二叉树的查询 / 插入 / 删除效率。

文章图片
#数据结构#c++
C++11标准 上 (万字解析)

左值是⼀个表示数据的表达式(如变量名或解引用的指针),⼀般是有持久存储位置,我们可以获取它的地址可作为赋值运算符的左操作数(除非被const修饰)左值可以出现赋值符号的左边,也可以出现在赋值符号右边。

文章图片
#c++#开发语言
C++之异常

异常抛出后,后面的代码就不再行(指throw后面那部分),前面申请了资源(内存、锁等),后面进行释放,但是中间可能会抛异常就会导致资源没有释放,这里由于异常就引发了资源泄漏,产生安全性的问题。抛出异常后,程序暂停当前函数的执行,开始寻找与之匹配的catch子句,首先检查throw本身是否在try块内部,如果在则查找匹配的catch语句,如果有匹配的,则跳到catch的地方进行处理。由于捕捉异常后,

文章图片
#c++#开发语言
C++之智能指针

目录一、智能指针的使用场景二、RAII思想三、C++标准库中的智能指针四、shared_ptr智能指针关于计数器:关于删除器:shared_ptr智能指针简单模拟实现shared_ptr智能指针循环引用问题五、weak_ptr六、shared_ptr线程安全问题C++中当我们new一个对象的时候一定要对其进行delete处理,但当new、delete之间抛出异常导致这个栈空间销毁时会导致delet

文章图片
#c++#开发语言
C++11 并发支持库中 atomic

不支持fetch_add等算术/位运算,也不支持+=等运算符。使用 CAS 时,比较是按位进行的(可能受对齐填充影响,推荐只用于无填充的 POD 类型)原子操作 = 不可分割的“读-改-写”,由硬件lock指令 + 缓存一致性保证。方法决定行为fetch_add返回旧值,exchange返回旧值,CAS返回成功/失败并更新预期值。类型要满足,不同特化支持的方法不同。内存顺序是可见性的开关:同步用r

文章图片
#c++
C++11 并发支持库上

thread库中分有两个重量级嘉宾,一个是;一个是joindetachmoveget_idyieldsleep_fort.join()thread类。

文章图片
#c++
多路复用I/O之Epoll

多个进程 / 线程,同时阻塞在同一个 epoll 的epoll_wait上;当一个 IO 事件就绪时,内核会唤醒所有等待的进程 / 线程;但最终只有一个进程能处理这个事件,其余进程白醒一场,重新休眠。这种无效唤醒、浪费 CPU 资源的现象,就是epoll 惊群。

文章图片
#网络
    共 16 条
  • 1
  • 2
  • 请选择