淘客商品网站怎么做的,建设工程网教育网官网,网站建设工单系统护语,厦门市建设与管理局一.STL标准库
结构:STL中有六大组件#xff0c;分别是#xff1a;容器#xff0c;算法#xff0c;迭代器#xff0c;仿函数#xff0c;配接器#xff0c;配置器#xff1b;以下分别介绍这六大组件中的最主要的三个。
1.容器
容器来配置存储空间#xff0c;算法通过…一.STL标准库
结构:STL中有六大组件分别是容器算法迭代器仿函数配接器配置器以下分别介绍这六大组件中的最主要的三个。
1.容器
容器来配置存储空间算法通过迭代器来获取空间内容仿函数来协助算法完成不同的策略 向量vector是连续存储的容器一种动态的数组有三个指针分别指向首端已使用的尾部整体的尾部当增加数据导致分配的内存不够时重新申请开辟一块更大的内存将数据拷贝过去。vector适用于顺序性的遍历。 列表list是不连续的链式的双向链表存储空间所以顺序读取较慢但插入删除较快排序较快 队列queue专门用于在先进先出的上下文中操作元素从容队列尾端压入从队列头部取出。队列有连续的顺序存储也有不连续的链式存储。通常做线程池一类的生产者消费者模式 映射Map是关联容器按照特定的顺序存储由键值和映射值组合而成的元素,映射通常被实现为键值对访问的红黑树,支持下标操作 栈stack是专门用于后进先出的上下文中操作在这种上下文中元素只从容器的一端插入和提取。通常用户顺序浏览界面并按序返回的情况
2.算法
查找搜索类算法findfind_first_ofsearchcount 改变序列类算法copytransformreplaceremovefill 关系类算法equalincludesmismatch 堆算法make_heappop_heappush_heapsort_heap
3.迭代器
迭代器Iterator模式⼜称 Cursor游标模式⽤于提供⼀种⽅法顺序访问⼀个聚合对象中各个元素, ⽽⼜不需暴露该对象的内部表示。或者说Iterator模式是运⽤于聚合对象的⼀种模式通过运⽤该模式使得我们可以在不知道对象内部表示的情况下按照⼀定顺序由iterator提供的⽅法访问聚合对象中的各个元素。由于Iterator模式的以上特性与聚合对象耦合在⼀定程度上限制了它的只能在STL中运⽤⼀般仅⽤于底层聚合支持类如STL的list、vector、stack 等容器类及ostream_iterator等扩展iterator。
二.存储结构
数据存储我们常见的有二叉树B树红黑树链表等其中最为常用的是二叉树和双链表。
1.二叉树遍历
二叉树的遍历顺序前中后是针对根节点来说的前序就是根在前中序就是根在中后序就是根在最后如针对子图来分别进行遍历 前序遍历遍历顺序是根左右上图遍历顺序是ABDFECGH 中序遍历遍历顺序是左根右上图遍历顺序是DFBEACHG 后续遍历遍历顺序是左右根上图遍历顺序是FDEBHGCA
2.红黑树
节点是红色或黑色 根节点是黑色 每个为空的叶子节点是黑色的 每个红色节点的两个子节点都是黑色 从任意节点到其每个叶子的所有路径都包含相同数目的黑色节点 时间复杂度为O(lgn) 本质上是自平衡二叉树
3.B树
关键字集合分布在叶子结点中非叶节点只是叶子结点中关键字的索引 B树中的关键字必须出现在叶节点中也可能在非叶结点中重复出现 B树非叶子节点不存储数据每个叶子节点指向相邻的叶子节点
4.Hash哈希表
时间复杂度O(1) 存储键值对这种对应的数据 通过开放地址法、链地址法解决哈希表的冲突和溢出问题 非线性结构
5.list链表
线性结构 由节点组成每个节点包含数据和指向下一个节点的指针 优点插入和删除操作非常高效只需调整指针即可 缺点访问任意元素的效率较低需要遍历整个链表
6.双链表
1.双链表结构 2.正序输出 3.倒序输出 4.双链表头插法 三.数据序列化
常用的数据序列化有Json格式XML格式protobuf格式。 Json:一般的web项目中目前最流行的主要就是json。因为浏览器对于json数据支持非常好有很多内建的函数支持 xml: 在webservice中应用最为广泛但是相比于json它的数据更加冗余因为需要成对的闭合标签。json使用了键值对的方式不仅压缩了一定的数据空间同时也具有可读性 protobuf:是后起之秀是谷歌开源的一种数据格式适合高性能对响应速度有要求的数据传输场景。因为profobuf是二进制数据格式需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数据。