- 博客(177)
- 收藏
- 关注
原创 08 MySQL视图
文章目录视图是什么基本操作视图的规则和限制视图是什么视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图主要作用是,将表的内容,常用需要的部分创建一个部分,这样使用视图的时候,可以减少查询的数据量。比如用户资料,有的用户是长期在线,有的用户基本不上线,那么就可以为长期用户创建视图,减少查询。基本操作创建视图create view 视图名 as select语句 from 表明 where 限制
2022-05-02 11:59:37
250
原创 07 MySQL事物
文章目录什么是事务事物的属性事务的版本支持事务的提交方式什么是事务事务就是由一组DML(数据操控语言,比如insert、update…)语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。事务就是需要做的事情,这个事情数据量比较大,处理比较复杂。假设一种场景:你毕业了,学校的教务系统后台 MySQL 中,不再需要你的数据,要删除你的所有信息(一般不会:) ), 那么要删除你的基本信息(姓名,电话,籍贯等)的同时,也删除和你有关的其他信息,比如:你的各科成绩
2022-05-01 17:54:51
258
原创 06 MySQL索引
文章目录一、索引的价值1.1. mysql与磁盘交互的基本单位1.2. 为什么交互的基本单位为Page(页)1.3. 索引是如何增加查找速度的1.4. 没有主键会怎么创建索引1.5. 为什么推荐使用自增ID作为主键1.6. 普通索引(第二索引)1.7. 复合索引二、innoDB在建立索引结构来管理数据的时候,其他数据结构为何不行三、InnoDB 和 MyISAM两种存储引擎索引的区别3.1. 聚簇索引和非聚簇索引四、索引操作4.1. 创建索引创建主键索引唯一索引的创建普通索引的创建4.2. 查询索引4.3.
2022-04-28 23:29:47
3172
6
原创 05 MySQL表的增删查改
之前的 对数据表的操作 主要是进行列的增删查改,这里要对每条数据进行增删查改。CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。具体语句的执行顺序为: from子句->where 子句->group by 子句->having 子句->select 子句->order by 子句。 后面子句的别名不能在前面的子句使用。文章目录一、插入数据1.1. 插入查询结果二、表的更新和替换2.1. 表的更新2.
2022-04-27 15:53:36
1329
1
原创 04 MySQL内置函数
文章目录日期函数字符串函数数学函数其它函数日期函数创建一个留言表,直接使用datetime类型即可。字符串函数数学函数其它函数user() 查询当前用户md5(str)对一个字符串进行md5摘要加密,摘要后得到一个32位字符串ifnull(val1, val2) 如果val1为null,返回val2,否则返回val1的值...
2022-04-27 10:15:56
601
原创 03 表的约束
文章目录为什么需要表的约束空属性默认值列描述zerofill主键创建主键删除主键复合主键主键索引自增长唯一建外键为什么需要表的约束真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是身份证,要求是唯一的。定义字段的时候,需要有一个类型,这样一个类型,有时候并不能满足我们对一个表的约束。比如:表字段是否可以为NULL,有没有默认值,表字段的解释能不能加上。对于数字类型的字段可不可以指定默认表示的位数。可不
2022-04-26 12:52:24
575
1
原创 02 MySQL数据类型
文章目录数据类型总体介绍tinyint类型bit类型小数类型字符类型日期和时间类型enum、set数据类型总体介绍所谓的数据类型:对数据进行统一的分类。从系统的角度出发,是为了使用统一的方式进行管理,更好的利用有限的空间。SQL中将数据类型分了三大类:数值类型、字符串类型和时间日期类型。tinyint类型tinyint:中文意思是非常小的整数,这个整数占一个字节,表示的范围为-128~127。一般插入数据时,即是超过了范围,也不会报错,只是会发生截断,而在MySQL下会报错。如
2022-04-25 23:21:19
1869
1
原创 01 MySQL数据库基础
MySQL的安装请看如下文章:Linux 安装Mysql(图文教程)2021MySql-8.0.26安装详细教程(保姆级)文章目录一、数据库基础1.1. 什么是数据库1.2. 服务器,数据库,表关系二、SQL分类三、数据库的基本操作连接MySQL查看数据库使用具体的数据库、查看数据表创建数据库删除数据库查看当前所在的数据库查看已经创建好的数据库的创建语句查看当前字符集修改数据库字符集不匹配导致乱码四、校验规则对数据库的影响查看数据库支持的字符集校验规则五、对数据表的操作查看表创建表查看表字段删除表和表
2022-04-25 16:25:05
1138
原创 Linux高级IO
文章目录五种IO模型阻塞IO非阻塞IO信号驱动IO多路转接IO异步IO五种IO模型内存和外设进行沟通的动作叫做IO。在网络层面,数据往网络里写的本质是将数据从内存写到网卡设备上,从网络里读的本质是将数据从网卡设备读到内存中。任何IO过程,都要包含两个步骤,第一是等待, 第二是拷贝。而且在实际的应用场景中, 等待消耗的时间往往都远远高于拷贝的时间。所以高效IO的本质是, 尽可能地减少等待的比重。读 recv/recvfrom: 等待内核的接收缓冲区当中有数据来(等待IO过程)、接收缓冲区之中有了数
2022-04-17 17:06:31
2527
3
原创 09 数据链路层
文章目录数据链路层以太网协议以太网协议格式对比理解MAC地址和IP地址认识MTUARP协议的作用ARP工作方式ARP格式ARP协议工作流程其他重要的协议或技术DNS协议DNS的产生域名域名服务器数据链路层网络层的IP协议只负责数据的源端、和数据的目的端,即只负责数据从哪里来,到哪里去。不负责数据的有序或者无序到达对方(数据的安全、可靠性是由TCP提供的)。数据链路层:数据链路,指OSI参考模型中的数据链路层,有时也指以太网、无线局域网等通信手段。数据链路层的协议定义了通过通信媒介互连的设备之间传
2022-04-13 14:30:44
1456
2
原创 08 网络层---IP协议
文章目录IP的基本概念IP协议头部格式IP的基本概念HTTP解决传送什么数据的问题:构建与解析请求和响应(对应的操作是recv和send)。tcp解决如何传送数据的问题:数据的可靠性,效率,什么时候发送,每次发送多少(具体办事还是得看下两层)。IP解决的是传送的策略问题,IP负责具体的传送:端到端(主机A到主机B),点到点(主机A到下一跳路由器),将数据经过路径选择,发送到对方主机的过程由IP层负责(可能经过多个IP)。数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递。而一旦跨越多
2022-04-12 14:45:16
2814
原创 listen的第二个参数
文章目录理解 listen 的第二个参数使用代码验证从原码角度来看为什么全队列的长度是listen的第二个参数+1理解 listen 的第二个参数Linux内核协议栈为一个tcp连接管理使用两个队列,分别是:半连接队列:用来保存SYN_SENT和SYN_RECV两个状态的连接。也就是三次握手还没有完成,连接还没建立的连接。全连接队列:用来保存保存ESTABLISHED状态的连接。三次握手已经完成的连接。全连接队列存放三次握手成功的连接。如果当服务器不调用accept函数,没有将全连接队列的请求拿
2022-04-10 16:35:22
3643
原创 07 传输层---TCP
文章目录TCP协议TCP协议段格式原码确认应答(ACK)机制超时重传机制链接管理机制为什么需要三次握手两次握手是否可以?一、二次握手容易受到SYN洪水攻击为什么是三次握手而不是四次握手?为什么需要四次挥手为什么客户端正式关闭前要进入TIME_WAIT状态?为什么TIME_WAIT的时间是2MSL?实验验证CLOSE_WAIT状态和TIME_WAIT状态验证CLOSE_WAIT验证TIME_WAIT滑动窗口滑动窗口是什么,为什么需要滑动窗口如何理解滑动窗口高速重发控制(快重传)流量控制什么是流量控制拥塞控制什
2022-04-10 12:01:29
3321
3
原创 06 传输层---UDP
文章目录一、端口号1.1. 端口号范围划分1.2. 认识知名端口号(Well-Know Port Number)1.3. netstat1.4. pidof二、长短链接2.1. 为什么需要长链接2.2. 客户端和服务器如何协商长短链接2.3. 怎么区分多个请求三、UDP协议3.1. 协议格式3.2. UDP的特点3.3. UDP的缓冲区3.4. UDP使用注意事项3.5. 基于UDP的上层协议一、端口号传输层是负责端对端之间的传输,端指的是端口(port);端口号(Port)标识了一个主机上进行通信的
2022-04-07 21:38:41
1727
原创 05 应用层---http协议
文章目录一、应用层协议1.1. 结构化数据1.2.序列化和反序列化二、网络版计算器2.1. 协议2.2. 服务端2.3. 客户端2.4. 效果展示三、HTTP协议3.1. URL3.1.1. urlencode(编码) 和 urldecode(解码)3.2. HTTP特征3.2.1. 无连接的:3.2.2. 无状态的:3.2.3. 简单快速:3.3. HTTP协议格式3.3.1. HTTP请求3.3.2. HTTP响应四、HTTP协议请求方法4.1. GET:获取资源4.2. POST:传输实体主体4.3.
2022-04-06 17:48:19
2579
1
原创 04 TCP协议通讯流程、如何理解套接字文件描述符
文章目录TCP协议通信流程服务器初始化:建立连接的过程:数据传输的过程:断开连接的过程:TCP和UDP的对比如何理解套接字文件描述符TCP协议通信流程一个服务器有可能有多个客户端来进行链接,链接一旦多了起来,同样需要对其进行管理。管理是需要成本的,体现在时间和空间上,即服务器和客户端为了维护这个链接、在系统层面都要提供一批数据结构来管理这批链接(udp不需要做、因此速度相对更快)。CS模型:客户端主动发起链接、服务器被动,不会主动发起链接就叫做CS模型。BS模型:通过游览器去访问服务器、本质上也是
2022-04-04 23:25:36
2554
2
原创 03 tcp服务端和客户端的实现
文章目录一、本地环回二、将sin_addr设置为INADDR_ANY的含义三、TCP协议3.1. 监听套接字 listen3.2. 建立连接accpet3.3. 连接服务端connect3.4. 文件和流的概念四、单线程tcp服务端和客户端的实现4.1. 服务端4.2. 客户端4.3. 实验现象五、tcp服务端优化5.1. 多进程版本5.2. 多线程版本5.3. 线程池版本5.4. 各个版本特点六、将一个进程放置后台,拿到前台一、本地环回IP:127.0.0.1 叫做本地环回。通常用来进行网络通信代码
2022-04-04 15:02:10
1660
2
原创 02 socket套接字编程---udp服务端和客户端
文章目录理解网络通信理解网络通信我们进行上网都需要打开软件(上网入口),比如游览器,当打开软件之时,将硬盘上的文件加载到内存之中,在客户端启动了客户端进程。而在服务器上也有对应的服务器进程。然后客户端进程通过网络寻找对应的服务器进程,进行数据的交互。其本质就是进程之间的通信。在这之中,ip标识全公网内唯一一台主机、端口号port表示该主机中唯一的网络进程、,所以ip+port就是网络之中唯一的进程,即形成了进程之间的通信。其中ip+port就是套接字,也就是说,套接字本质就是进程间通信。...
2022-04-03 16:58:11
2523
2
原创 01 网络基础
文章目录一、网络发展1.1. 独立模式: 计算机之间相互独立1.2. 网络互联: 多台计算机连接在一起, 完成数据共享1.3. 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起1.4. 广域网WAN: 将远隔千里的计算机都连在一起1.5. 网络需要解决的问题二、协议2.1. 网络协议是什么2.2. 网络协议簇2.3. 体系结构2.4. 协议分层2.5. 不同协议对应的分层2.5.1. OSI七层模型2.5.2. TCP/IP五层(或四层)模型三、网络传输基本流程3.1. 数据包封装和分用3.
2022-04-02 22:56:55
3022
1
原创 C++图的点+边存储结构以及最小生成树、拓扑排序、最短路径算法实现
文章目录图的点+边存储结构插入操作BFS(广度优先遍历)DFS(深度优先遍历)拓扑排序不使用入度的拓扑排序最小生成树Kruskal算法Prime算法最短路径---Dijkstra算法使用加强堆优化Dijkstra算法图的点+边存储结构相对于邻接矩阵和邻接表的结构,图的点+边的存储结构能够存储更多信息,因此更容易获取每个点的入度和出度以及对应的边,方便实现最小生成树、最短路径以及拓扑排序等算法。另外,邻接表和邻接矩阵等存储方式与点+边的存储方式可以相互转化,实现算法接口的复用,所以当传入的参数是邻接表
2022-03-08 16:31:46
3958
1
原创 C++加强堆
文章目录为什么需要加强堆加强堆的具体实现加强堆的基本结构插入push和删除pop操作修改和删除任意值操作附录为什么需要加强堆在08 stack、queue和priority_queue的使用和模拟实现这一章已经实现过堆。但是堆有一些不足,那就是堆不能做到修改堆中元素的值,并且只能删掉头部的值,不能够删除堆中其他的值,因为这样会破坏堆的结构。如果想要不破坏堆的结构也很好办,只需要重新向上或者向下堆的结构即可,但是这样又会有新的问题,那就是修改或删除元素在堆中的位置是未知的,如果想要获取该位置,则需要
2022-03-07 22:51:35
1214
3
原创 Trie(前缀树)
文章目录Trie(前缀树)代码实现(vector和map)Trie(前缀树)前缀树是指:单个字符串中,字符从前到后加到一棵多叉树上。字符放在路上,字节点上有专属的数据项(常见的是pass值和end值,pass表示有多少路径经过该节点,end表示有多少路径以该节点结尾)所有样本都这样添加,如果没有路就新建,如果有路就复用沿途节点的pass值增加1,每个字符串结束时来到的节点end值增加1代码实现(vector和map)使用vector:vector适合字符串中字符单一的情况,比如字
2022-03-06 13:59:25
610
原创 C++ 图(邻接矩阵和邻接表结构)
文章目录图的基本概念图的存储结构邻接矩阵邻接表图的广度优先遍历图的深度优先遍历代码实现最小生成树Kruskal算法Prime算法最短路径图的基本概念图的存储结构因为图中既有节点,又有边(节点与节点之间的关系),因此,在图的存储中,只需要保存:节点和边关系即可。节点保存比较简单,只需要一段连续空间即可。其边关系一般采用邻接矩阵或邻接表的方式保存。邻接矩阵因为节点与节点之间的关系就是连通与否,即为0或者1,因此邻接矩阵(二维数组)即是:先用一个数组将定点保存,然后采用矩阵来表示节点与
2022-02-20 19:50:19
5277
5
原创 B-树,B+树,B*树
文章目录B-树为什么需要B-树B-树的性质B-树的性能分析代码实现B+树B+树查找的优点B*树B-树为什么需要B-树种类数据格式时间复杂度顺序查找无要求O(N)二分查找有序O( log2N)二叉搜索树无要求O(N)二叉平衡树(AVL树和红黑树)无要求O( log2N)哈希无要求O(1)位图无要求O(1)布隆过滤器无要求O(K)(K为哈希函数个数,一般比较小)以上结构适合用于数据量不是很大的情况,如果数据量非常
2022-02-19 19:44:52
727
原创 C++并查集
文章目录并查集的原理并查集的实现代码并查集的典型应用并查集的原理在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-find set)。并查集一般可以解决以下问题:查找元素属于哪个集合沿着数组表示树形关系以上一直找到根(即:树中中元素为负数的位置)。查看两个元素是否属于同一个集合沿着数组表
2022-02-18 15:33:36
2793
1
原创 可变模版参数函数
文章目录可变模板参数展开参数包递归函数方式展开参数包逗号表达式展开参数包可变模板参数C++11的新特性–可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。可变参数模板和普通模板的语义是一样的,只是写法上稍有区别,声明可变参数模板时需要在typename或class后面带上省略号“…”。比如我们常常这样声明一个可变模版参数:template<typename…>或者template<c
2022-02-11 15:13:46
1434
1
原创 C++函数包装器
文章目录为什么需要函数包装器函数包装器bind调整可调用类型的参数为什么需要函数包装器function函数包装器也叫适配器,在C++中其本质是一个类模板。由于C++的历史遗留问题,导致如果想实现一个函数功能,可以采用函数名、函数指针、仿函数、有名称的lambda表达式,所有这些都是可调用的类型。它们存在很多问题:函数指针类型太复杂,不方便使用和理解仿函数类型是一个类名,没有指定调用参数和返回值,得去看operator()的实现才能看出来。lambda表达式在语法层,看不到类型,只能在底层看
2022-02-11 01:52:49
1662
原创 万能引用,引用折叠,右值变左值的情况
文章目录万能引用引用折叠右值变左值的情况万能引用左值引用只能引用左值,右值引用只能引用右值。但是对于一个函数我们有时候并不清楚传入的参数是左值还是右值,这时候就需要写两个同名的函数重载,而万能引用的出现解决了这个问题。万能引用需要和模板配合使用template<class T>void f(T&& param); 如果一个变量或者参数被声明为T&&,其中T是被推导的类型,那这个变量或者参数就是一个万能引用。当传入的参数是左值的时候,函数就会实例
2022-02-09 17:16:41
2810
5
原创 STL总结
文章目录STL的本质STL的六大组件容器算法迭代器迭代器实现原理迭代器与类的融合反向迭代器适配器仿函数空间配置器STL的本质通俗说:STL是Standard Template Library(标准模板库),是高效的C++程序库,其采用泛型编程思想对常见数据结构(顺序表,链表,栈和队列,堆,二叉树,哈希)和算法(查找、排序、集合、数值运算…)等进行封装,里面处处体现着泛型编程程序设计思想以及设计模式,已被集成到C++标准程序库中。具体说:STL中包含了容器、适配器、算法、迭代器、仿函数以及空间配置器。S
2022-02-01 18:34:05
2291
1
原创 C++中的类型转换
文章目录C语言之中的类型转换为什么C++需要四种类型转换C++强制类型转换static_castreinterpret_cast:const_cast:dynamic_cast:explicitC语言之中的类型转换在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型转换和显式类型转换。隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败。相近类型,比如int型转化为
2022-01-30 21:38:52
1351
原创 C++ 特殊类的设计
文章目录设计一个类,只能在堆上创建对象设计一个类,只能在栈上创建对象设计一个类,不能被拷贝设计一个类,不能被继承设计一个类,只能创建一个对象(单例模式)饿汉模式懒汉模式总结对比一下饿汉模式和懒汉模式的区别设计一个类,只能在堆上创建对象实现方式:将类的构造函数私有,这样就无法在栈或堆上直接定义对象了。提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建(因为,构造函数私有,在外面不能调动,就需要成员函数去调动,而成员函数需要成员调动,但是不能创建成员,因此用一个静态函数去调用构造函数)。创
2022-01-30 17:38:41
2152
原创 C++11---智能指针
文章目录一、为什么需要智能指针1.1. 什么是内存泄漏,内存泄漏的危害1.2. 内存泄漏分类1.3. 如何避免内存泄漏二、智能指针的使用及原理2.1. RAII2.2. std::auto_ptr2.3. std::unique_ptr2.4. std::shared_ptr2.4.1. 线程安全问题2.4.2. 循环引用问题2.4.3. 定制删除器三、智能指针的历史四、使用RAII思想设计的锁管理守卫一、为什么需要智能指针程序员自己控制的内存,在一些特殊场景之下,有可能发生内存泄漏,智能指针则可以帮
2022-01-27 22:31:54
390
原创 C++11---异常
文章目录一、C语言传统的处理错误的方式二、C++异常概念三、异常的使用3.1. 异常的抛出和捕获3.2. 异常的重新抛出3.3. 异常安全3.4. 异常规范四、自定义异常体系五、C++标准库的异常体系六、异常的优缺点一、C语言传统的处理错误的方式传统的错误处理机制:终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误。C 标准库中setjmp和l
2022-01-26 16:17:53
352
原创 C++11---线程库
文章目录一、线程库的介绍1.1. 使用时的注意点1.2. 线程函数参数1.3. join与detach二、原子性操作库2.1. atomic2.2. 锁三、使用lambda表达式创建多个线程四、条件变量一、线程库的介绍在C++11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C++11中最重要的特性就是对线程进行支持了,使得C++在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使用标准库中的线程,必须包含&
2022-01-26 00:01:50
2043
原创 C++11---lambda表达式
文章目录C++98中的一个例子lambda表达式的格式lambda表达式的原理C++98中的一个例子在C++98中,如果待排序元素为自定义类型,需要用户定义排序时的比较规则:struct Goods{ string _name; double _price;};struct Compare{ bool operator()(const Goods& gl, const Goods& gr) { return gl._price <= gr._price; }
2022-01-25 00:19:58
1069
原创 17 C++11常用语法
文章目录一、C++11简介二、列表初始化2.1. 容器如何支持花括号初始化三、变量类型的推导3.1. 编译时类型推导:auto3.2. decltype类型推导3.3. 运行时类型推导 typeid四、final、override五、新增容器六、范围for循环七、默认成员函数控制defaultdelete八、右值引用8.1. 右值引用的移动语义8.2. 移动语义需要注意的问题8.3. 右值引用引用左值move的用法和注意事项8.4. 总结8.5. 完美转发一、C++11简介在2003年C++标准委员
2022-01-24 20:56:15
4726
6
原创 16 哈希的应用---位图和布隆过滤器
文章目录一、位图1.1. 什么是位图1.2. 位图的使用场景1.3. 位图的应用二、位图的定义和成员函数2.1. 定义方式2.2. 常用函数2.3. 运算符的使用三、位图的模拟实现四、布隆过滤器4.1. 布隆过滤器的提出4.2. 布隆过滤器的概念4.3. 布隆过滤器的应用4.4. 布隆过滤器的设计4.5. 布隆过滤器的优缺点五、布隆过滤器的代码实现六、海量数据常见处理方式一、位图1.1. 什么是位图所谓位图就是用每一位来存放某种状态,适用于海量的数据,数据无重复的场景。通常用来判断某个数据在或者不在
2022-01-21 18:32:33
1485
3
原创 15 unordered_map和unordered_set的使用以及用哈希桶模拟实现
文章目录unordered_map,unordered_set,map和set的用法和区别用哈希桶模拟实现unordered_map和unordered_setunordered_map的代码unordered_set的代码哈希表和迭代器的代码unordered_map,unordered_set,map和set的用法和区别在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时的效率可达到 O ( logN ) ,即最差情况下需要比较红黑树的高度次,当树中的结点非常多时,查询效率也
2022-01-18 17:14:30
1006
原创 14 哈希表和哈希桶
文章目录一、哈希表二、哈希函数2.1. 直接定址法(常用)2.2. 除留余数法(常用)2.3. 几种不常用的方法三、哈希冲突四、闭散列4.1. 线性探测4.2. 负载因子4.3. 二次探测4.4. 插入和删除操作4.5. 扩容操作4.6. 代码实现五、开散列(哈希桶)5.1. 开散列扩容5.2. 代码实现六、闭散列和开散列的比较一、哈希表哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,通过
2022-01-17 16:04:44
3911
1
原创 13 set和map以及用红黑树模拟实现set和map
文章目录序列容器和关联式容器树形结构与哈希结构setset的成员函数构造方法set当中常用的成员函数multisetmapmap的成员函数构造方法map的插入insertmap的查找findmap的删除erasemap的[ ]运算符重载map的其他成员函数统计出现次数的三种方式对统计的次数进行排序multimap用红黑树模拟实现map和set参数的控制使用仿函数比较参数大小迭代器的实现序列容器和关联式容器C++STL中的部分容器,比如:vector、list、deque、forward_list(C+
2022-01-13 17:09:27
936
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅