STL
知之可否
这个作者很懒,什么都没留下…
展开
-
从 std::list 中 size() 的时间复杂度引出的讨论...
很奇怪的,或者说是一个不应成为问题的问题...std::list 的 size() 方法时间复杂度是多少?第一感觉应该是 O(1) 没错吧,多一个变量用于储存链表长度应该是很轻易的事情。于是有了下面这段代码:#include#include#includeusing namespace std;int main(){ time_t start, fin转载 2016-05-19 09:47:35 · 3501 阅读 · 0 评论 -
正确释放Vector的内存
本文来自文章作者(@_羊仔)的投稿(原文)。今天在看微博的时候, 有人提出了一个对于Vector内存泄露的疑问( Link)。博主采用 Vector存储一些数据,但是发现在执行 clear() 之后内存并没有释放,于是怀疑产生了内存泄露。随后有人回复:“vector 的 clear 不影响 capacity , 你应该 swap 一个空的 vector。”开始并不知转载 2016-06-02 16:04:19 · 7211 阅读 · 0 评论 -
STL系列之一 deque双向队列
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,deque在接口上和vector非常相似,下面列出deque的常用成员函数: deque的实现比较复杂,内部会维护一个map(注意!不是STL中的map容器)即一小块连续的空间,该空间中每个元素都是指针,指向另一段(较大的)区域,这个区域称为缓冲区,缓冲区用来保存de转载 2016-05-05 09:56:57 · 446 阅读 · 0 评论 -
数据结构:hash_map原理
这是一节让你深入理解hash_map的介绍,如果你只是想囫囵吞枣,不想理解其原理,你倒是可以略过这一节,但我还是建议你看看,多了解一些没有坏处。hash_map基于hash table(哈希表)。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较转载 2016-04-14 16:30:17 · 2518 阅读 · 0 评论 -
C++中map、set、hash_map、hash_set、unordered_map、unordered_set通俗辨析
一、hash_map、unordered_map这两个的内部结构都是采用哈希表来实现。区别在哪里?unordered_map在C++11的时候被引入标准库了,而hash_map没有,所以建议还是使用unordered_map比较好。哈希表的好处是什么?查询平均时间是O(1)。顾名思义,unordered,就是无序了,数据是按散列函数插入到槽里面去的,数据之间无顺序可言,但是有些时候转载 2016-04-14 16:29:26 · 2066 阅读 · 0 评论 -
stl中list的sort算法实现
STL中有一个std::sort算法,但它是不支持std::list的,因为list不提供RandomIterator的支持,但list自己提供了sort算法,把list的元素按从小到大的方式来排序,代码长度到不长,但真是难以读懂,后来扣持了一下午终于搞明白了,贴个总结上来。list::sort的代码如下(sgi stl):[cpp] view plai转载 2016-06-02 16:55:04 · 594 阅读 · 0 评论 -
轻松搞定面试中的红黑树问题
http://blog.csdn.net/silangquan/article/details/18655795 连续两次面试都问到了红黑树,关键两次都没有答好,这次就完整地来学习整理一下。没有学习过红黑树的同学请参考:> Chapter 13 Red-Black Trees Chapter 14 Augmenting Data Structures转载 2016-06-03 20:00:41 · 11514 阅读 · 0 评论 -
STL面试题
1.说说std::vector的底层(存储)机制。 vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;当释放或者删除里面的数据时,其存储空间不释放,仅仅是清空了里面的数据。2.std::vector的自增长机制。 当已经分配的空间不够装下转载 2016-06-02 15:32:36 · 532 阅读 · 0 评论