![](https://img-blog.csdnimg.cn/20200421212538389.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
STL
记录成长,分享知识。
Gopher大威
双非硕士一枚,自学转计算机,实习,秋招拿下腾讯、华为、京东、360、顺丰、深信服等公司offer。专注于分享计算机基础知识,数据结构与算法,面经等。
展开
-
从底层认识priority_queue到用priority_queue解决有关顺序大小的题
一、认识priority_queuepriority_queue,即优先级队列,顾名思义,是一个拥有权值概念的queue,它允许加入新元素、移除旧元素、审视元素值等功能。由于这是一个queue,所以只允许在底端加入元素、并从顶端取出元素,除此之外,别无其他存取元素的途径。因为它不提供遍历的功能,也不提供迭代器。插入和删除元素的时候,会保证队头的元素一定是权值最大(小)的。究竟是最大还是最小,根据我们写的比较函数来实现。下文会有这方面的总结。那么大概了解priority_queue是什么样的数据结构之后,原创 2020-08-28 20:59:51 · 592 阅读 · 0 评论 -
STL hash_set、hash_map、hash_multiset和hash_multimap总结
ash_set、hash_map、hash_multiset、hash_multimap四个关联容器都是以hashtable为底层实现方法(技巧)。关于hashtable的底层实现,可参见STL hashtable的底层实现总结一、hash_set1、用hashtable实现,因hashtable中实现了几乎所有hash_set的操作,所以hash_set直接调用hashtable的方法即...原创 2020-04-30 01:37:57 · 306 阅读 · 0 评论 -
STL hashtable的底层实现总结
一、hashtable概述hashtable在C++的STL里占据着比较重要的一席之地。其中的hash_set、hash_map、hash_multiset、hash_multimap四个关联容器都是以hashtable为底层实现方法(技巧)。应该说,上述的四个关联式容器提供的API都是对hashtable原生态API的高层封装,因为hashtable本身都提供了它们所需要的基础API。如果要...原创 2020-04-30 01:22:17 · 2455 阅读 · 2 评论 -
slist的简单总结
一、slist的概述STL list是个双向链表。SGI STL另提供了一个单向链表,叫做slist。如下图所示。这个容器并不在标准规范之内。二、与list对比不同之处:1、slist和list的主要差别在于,前者的迭代器属于单向的Forward Iterator,后者的迭代器属于双向的Bidirectional Iterator。为此slist的功能自然也就受到了许多限制。但是单向链表...原创 2020-04-27 00:14:26 · 2968 阅读 · 0 评论 -
STL中list的底层实现机制及常用操作
一、list概述list是双向链表,相较于vector的连续性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。二、list的迭代器list不能再像vector一样以普通指针作为迭代器,因为其节点不保证在存储空间中连续存在。list迭...原创 2020-04-25 18:57:49 · 1080 阅读 · 0 评论 -
STL中vector的底层实现机制及常用操作
本文基于SGI STL vector源码分析其底层实现,只关注核心实现,不考虑空间配置器allocator。一、vector概述vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变,要换个大(或小)一点的房子,可以,一切琐细得由客户端自己来:首先配置一块新空间,然后将元素从旧址一一搬往新址,再把原来的空间释还...原创 2020-04-22 21:07:23 · 962 阅读 · 0 评论