STL
天天向上zb
爱拼才会赢
展开
-
STL源码剖析—list
相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。 list不仅是一个双向链表,而且还是一个环状双向链表。另外,还有一个重要性质,插入操作和接合操作都不会造成原有的list迭代器失效,这在vector是不成立的原创 2015-05-31 21:28:28 · 871 阅读 · 0 评论 -
STL源码剖析---deque
deque的概述 deque是一种双向开口的连续线性空间,允许我们在头尾两端操作。所以我们需要保证deque可以在常数时间内对头和尾元素进行插入或者删除。 Deque还有一个明显的与Vector不同的特点,就是它没有capacity的概念,它是动态地用分段连续的空间组合起来的,随时可以增加一段新的空间并连接起来,而为了隐藏deque的这些底层细节(分段连续的空间组成---需要一个中央管理器来管理原创 2015-05-31 22:05:29 · 552 阅读 · 0 评论 -
STL源码剖析---stack,queue
Stack栈是常用的一个FILO数据结构,FILO是指first in last out,先进后出。因为栈只有一个口,即在这个口进也在这个口出,stack允许新增元素、移除元素、取得最顶端元素。但除了最顶端元素外,没有任何其他方法可以存取stack的其他元素。只能在栈顶操作,不能访问栈中的其他元素,所以栈没有迭代器。 Stack的实现是依赖其他容器的,用deque做底层数据结构。这样的实现,在S原创 2015-06-01 15:25:10 · 714 阅读 · 0 评论 -
STL源码剖析---heap
Heap堆是常用的数据结构,Heap中也可以存放元素。但是STL中并没有提供Heap容器,只是提供了关于Heap操作的算法。只要支持RandomAccessIterator的容器都可以作为Heap容器。Heap的背景是建立在优先队列的基础上,priority queue允许我们任意的插入一个元素,但是会自动将元素进行排序,使得取出时一定是从优先级最高的元素开始取。我们可以考虑使用list这种数据结原创 2015-06-01 16:02:48 · 585 阅读 · 0 评论