STL
文章平均质量分 92
JiaXianghao.
这个作者很懒,什么都没留下…
展开
-
哈希函数和哈希表
哈希函数和哈希表?哈希函数和哈希表是非常重要的内容,在面试的时候最经常使用。尤其是辅助作用。哈希函数的算法的原理是超纲的内容(底层的实现是位运算),常见的哈希算法有扩展MD5(返回2^ 64)、SHA1(返回2^128)(哈希函数的实现有数千种实现方法)经典实现中,桶后跟的是链表,Java中的实现,实际上不是O(1),而是O(logN),只不过这个底数很大。桶后跟的是红黑树(查询快)。哈希表开头就是哈希域,这个一般是经过我们压缩了的哈希域,但是可以保证离散性。Hash函数不是用来排序的,hashm原创 2021-01-16 11:00:42 · 251 阅读 · 0 评论 -
STL
诞生原因 为了建立数据结构合算法的一套标准并且降低期间耦合关系以提升各自的独立性、弹性和互操作性,C++里诞生了STL。六大组件容器:是各种数据结构,从实现角度来看,STL容器是一种类模板。算法:从实现角度来看,STL算法是一种函数模板。迭代器:扮演算法和容器之间的胶合剂,是所谓的泛型指针,迭代器是一种将operator*,operator->,operator++,operator–等指针相关操作予以重载原创 2021-01-11 12:52:32 · 225 阅读 · 0 评论 -
list容器和forward_list容器
list就是一个双向链表,只支持双向顺序访问。在链表的任何位置进行插入或者删除操作都很快。原创 2020-07-10 14:58:29 · 216 阅读 · 0 评论 -
STL-算法
算法概述算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等…<numeric>体积很小,只包括在几个序列容器上进行的简单运算的模板函数.<functiona...翻译 2019-09-15 22:16:25 · 287 阅读 · 0 评论 -
STL-unordermap
在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可以达到log_2 N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联...原创 2019-09-12 22:56:14 · 489 阅读 · 0 评论 -
STL-map和multimap
根据应用场景的不同,STL共实现了两种不同结构的管理式容器:树型结构与哈希结构。树型结构的关联式容器主要有四种:map、set、multimap、multiset。这四种容器的共同点是:使用平衡二叉树(红黑树)作为其底层结构,容器中的元素是一个有序的序列。map的特点map是关联容器,它按照特定的次序(按照key来比较)存储由键值Key和值value组合而成的元素在map中,键值key通常...原创 2019-09-12 14:48:23 · 240 阅读 · 0 评论 -
STL-set+multiset
什么是关联式容器 关联式容器是非线性的树结构,更准确的说是二叉树结构。各元素之间没有严格的物理上的顺序关系,也就是说元素在容器中并没有保存元素置入容器时的逻辑顺序。关联式容器另一个显著特点是:在值中选择一个值作为关键字key,这个关键字对值起到索引的作用,方便查找。例如set、multiset、 map以及multimap都是...原创 2019-09-11 21:18:02 · 86 阅读 · 0 评论 -
STL-stack和queue
stack是一种先进后出的数据结构,它只有一个出口,如下图所示,stack容器允许新增元素,移动元素,取得栈顶元素,但是除了最顶端外,没有任何方法可以存取stack的其他元素。换言之,stack不允许有遍历行为将元素推入栈的操作叫做压栈(push),将元素推出栈的操作叫做弹栈(pop)stack所有元素都必须符合先进后出的前提,只有stack顶端的元素,才有机会被外界取用,stack不提供遍...原创 2019-09-10 17:22:18 · 108 阅读 · 0 评论 -
STL-deque容器
deque简介 deque是一种双向开口的连续线性空间。所谓的双向开口意思就是说可以在头尾两端分别做元素的插入和删除操作。vector容器虽然可以在头尾两端插入元素,但是在其头部操作效率极差,无法接受。 deque容器和vector容器最大的差异,一在于...原创 2019-09-09 20:47:07 · 175 阅读 · 0 评论 -
STL-vector
为什么会有vector?vector的数据安排以及操作方式,与数组非常相似,两者的唯一差别在于空间运用的灵活性。数组是静态空间,一旦分配空间后就不能改变其大小,如果想要扩容或者是减容,整个过程比较繁琐。vector是动态空间,随着元素的加入,他的内部机制会自动扩充空间以容纳新元素。因此vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必害怕空间不足而一开始就分配一个大树组...原创 2019-09-08 20:29:34 · 127 阅读 · 0 评论 -
STL-string类
为什么需要string类? C语言中,字符串是以‘\0’结尾的一些字符的集合,为了方便操作,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不符合OOP的思想,而且需要用户自己管理,稍不留神还可能产生越界访问。简要介绍string是表示字符串的字符串类该类的结构与常规同期的接口基本相同,再添加...原创 2019-09-08 19:08:29 · 107 阅读 · 0 评论