STL
文章平均质量分 73
最爱榴莲糖
这个作者很懒,什么都没留下…
展开
-
C++ 哈希详解
具体来说,当使用直接定址法时,我们可以通过一个固定的偏移量或者一个简单的数学运算来计算输入值对应的哈希表位置。然而,拉链法也存在一些缺点。在使用拉链法时,通过哈希函数计算键的哈希值,并访问对应的槽。总之,拉链法是一种解决哈希冲突的方法,通过在哈希表的每个槽中存储一个链表来保存具有相同哈希值的键值对。无论是哪种探测方法,在哈希表逐渐接近满的过程中,插入数据的效率会越来越低,因此闭散列哈希表不能满了再增容。进行同样的计算,把求得的函数值当做元素的存储位置,在节后中按此位置取元素比较,若关键码相等,则搜索成功。原创 2023-06-28 17:07:17 · 2172 阅读 · 0 评论 -
C++ 简单实现一棵AVLTree 附图解
二叉搜索树的出现使得存储数据的同时方便进行高效搜索(因为在此之前的数据结构基本都是暴力搜索),而二叉搜索树的时间复杂度为O(log2 N),但二叉搜索树还是有缺陷的,如在极端情况下(比如有序的方式进行插入),二叉搜索树就会退化成单链形式,时间复杂度变为O(N)效率低下。正因如此,才出现了AVLTree。原创 2023-05-03 15:00:15 · 73 阅读 · 0 评论 -
C++ 优先级队列(priority_queue)
priority_queue也是queue,所以其只允许在队头出数据,在队尾入数据,priority使得该队列有了权值的概念,priority_queue会对入到其内的元素按照元素权值进行排列。我们已经知道了可以使用仿函数来改变priority_queue的优先级,具体是如何做到的的,我们可以通过实现一个priority_queue来更深入的了解它。然后我们再单独介绍一下里面使用到的仿函数。如果想变成小的优先级高,该怎么办呢?---可以使用仿函数。剩下的函数就好理解了。原创 2023-04-07 00:09:00 · 231 阅读 · 0 评论 -
C++ stl栈与队列及实现方法
而deque的出现同时解决了两者的缺点,相比于vector,deque允许在常数时间内进行头插和头删操作,而且deque没有容量的概念,它是动态地以分段连续空间组合而成,随时可以增加一段新的空间并链接起来,因此像vector扩容时释放旧空间,开辟新空间再拷贝元素的损耗问题就被解决了。默认情况下,stack和queue是基于deque实现的,我们上面提到了用vector来实现一个stack,用list来实现一个queue,但是这样有显而易见的缺点。用list来实现一个queue。介绍stack以下几种功能。原创 2023-04-06 21:09:18 · 182 阅读 · 0 评论