上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 40 下一页

2021年7月29日

摘要: 一、volatile介绍 volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致 阅读全文
posted @ 2021-07-29 21:28 超人不会灰啊 阅读(253) 评论(0) 推荐(0) 编辑

2021年7月28日

摘要: 记住前三个: 线性探测 使用hash函数计算出的位置如果已经有元素占用了,则向后依次寻找,找到表尾则回到表头,直到找 到一个空位 开链 每个表格维护一个list,如果hash函数计算出的格子相同,则按顺序存在这个list中 再散列 发生冲突时使用另一种hash函数再计算一个地址,直到不冲突 二次探测 阅读全文
posted @ 2021-07-28 22:52 超人不会灰啊 阅读(112) 评论(0) 推荐(0) 编辑
 
摘要: map支持键值的自动排序,底层机制是红黑树,红黑树的查询和维护时间复杂度均为$O(logn)$,但是空间占用比较大,因为每个节点要保持父节点、孩子节点及颜色的信息 unordered_map是C++ 11新添加的容器,底层机制是哈希表,通过hash函数计算元素位置,其查询时间复杂度为O(1),维护时 阅读全文
posted @ 2021-07-28 22:50 超人不会灰啊 阅读(561) 评论(0) 推荐(0) 编辑
 
摘要: set只提供一种数据类型的接口,但是会将这一个元素分配到key和value上,而且它的compare_function用 的是 identity()函数,这个函数是输入什么输出什么,这样就实现了set机制,set的key和value其实是一样 的了。其实他保存的是两份元素,而不是只保存一份元素 ma 阅读全文
posted @ 2021-07-28 22:48 超人不会灰啊 阅读(259) 评论(0) 推荐(0) 编辑
 
摘要: map的特性是所有元素会根据键值进行自动排序。map中所有的元素都是pair,拥有键值(key)和实值 (value)两个部分,并且不允许元素有相同的key 一旦map的key确定了,那么是无法修改的,但是可以修改这个key对应的value,因此map的迭代器既不 是constant iterato 阅读全文
posted @ 2021-07-28 22:43 超人不会灰啊 阅读(457) 评论(0) 推荐(0) 编辑
 
摘要: STL中的容器可分为序列式容器(sequence)和关联式容器(associative),set属于关联式容器。 set的特性是,所有元素都会根据元素的值自动被排序(默认升序),set元素的键值就是实值,实值就是 键值,set不允许有两个相同的键值 set不允许迭代器修改元素的值,其迭代器是一种co 阅读全文
posted @ 2021-07-28 22:28 超人不会灰啊 阅读(150) 评论(0) 推荐(0) 编辑
 
摘要: priority_queue,优先队列,是一个拥有权值观念的queue,它跟queue一样是顶部入口,底部出口,在插 入元素时,元素并非按照插入次序排列,它会自动根据权值(通常是元素的实值)排列,权值最高,排 在最前面,如下图所示。 默认情况下,priority_queue使用一个max-heap完 阅读全文
posted @ 2021-07-28 22:20 超人不会灰啊 阅读(89) 评论(0) 推荐(0) 编辑
 
摘要: heap(堆)并不是STL的容器组件,是priority queue(优先队列)的底层实现机制,因为binary max heap(大根堆)总是最大值位于堆的根部,优先级最高。 binary heap本质是一种complete binary tree(完全二叉树),整棵binary tree除了最底 阅读全文
posted @ 2021-07-28 22:05 超人不会灰啊 阅读(96) 评论(0) 推荐(0) 编辑
 
摘要: stack stack(栈)是一种先进后出(First In Last Out)的数据结构,只有一个入口和出口,那就是栈顶,除了 获取栈顶元素外,没有其他方法可以获取到内部的其他元素,其结构图如下: stack这种单向开口的数据结构很容易由双向开口的deque和list形成,只需要根据stack的性 阅读全文
posted @ 2021-07-28 21:40 超人不会灰啊 阅读(88) 评论(0) 推荐(0) 编辑
 
摘要: vector是单向开口(尾部)的连续线性空间,deque则是一种双向开口的连续线性空间,虽然vector也可 以在头尾进行元素操作,但是其头部操作的效率十分低下(主要是涉及到整体的移动) deque和vector的最大差异一个是deque运行在常数时间内对头端进行元素操作,二是deque没有容量的概 阅读全文
posted @ 2021-07-28 21:28 超人不会灰啊 阅读(107) 评论(0) 推荐(0) 编辑
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 40 下一页