C++Primer
天天向上zb
爱拼才会赢
展开
-
STL源码剖析—list
相较于vector的连续线性空间,list就显得复杂许多,它的好处是每次插入或删除一个元素,就配置或释放一个元素空间。因此,list对于空间的运用有绝对的精准,一点也不浪费。而且,对于任何位置的元素插入或元素移除,list永远是常数时间。 list不仅是一个双向链表,而且还是一个环状双向链表。另外,还有一个重要性质,插入操作和接合操作都不会造成原有的list迭代器失效,这在vector是不成立的原创 2015-05-31 21:28:28 · 913 阅读 · 0 评论 -
STL源码剖析---deque
deque的概述 deque是一种双向开口的连续线性空间,允许我们在头尾两端操作。所以我们需要保证deque可以在常数时间内对头和尾元素进行插入或者删除。 Deque还有一个明显的与Vector不同的特点,就是它没有capacity的概念,它是动态地用分段连续的空间组合起来的,随时可以增加一段新的空间并连接起来,而为了隐藏deque的这些底层细节(分段连续的空间组成---需要一个中央管理器来管理原创 2015-05-31 22:05:29 · 588 阅读 · 0 评论 -
STL源码剖析---stack,queue
Stack栈是常用的一个FILO数据结构,FILO是指first in last out,先进后出。因为栈只有一个口,即在这个口进也在这个口出,stack允许新增元素、移除元素、取得最顶端元素。但除了最顶端元素外,没有任何其他方法可以存取stack的其他元素。只能在栈顶操作,不能访问栈中的其他元素,所以栈没有迭代器。 Stack的实现是依赖其他容器的,用deque做底层数据结构。这样的实现,在S原创 2015-06-01 15:25:10 · 764 阅读 · 0 评论 -
STL源码剖析---heap
Heap堆是常用的数据结构,Heap中也可以存放元素。但是STL中并没有提供Heap容器,只是提供了关于Heap操作的算法。只要支持RandomAccessIterator的容器都可以作为Heap容器。Heap的背景是建立在优先队列的基础上,priority queue允许我们任意的插入一个元素,但是会自动将元素进行排序,使得取出时一定是从优先级最高的元素开始取。我们可以考虑使用list这种数据结原创 2015-06-01 16:02:48 · 625 阅读 · 0 评论 -
经典排序算法
1.经典排序算法 – 插入排序Insertion sort 插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,折半插入排序留到“查找”内容中进行。 图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。 #include原创 2015-07-06 21:35:56 · 827 阅读 · 0 评论 -
第18章 用于大型程序的工具
1. 独立开发的库几乎不可避免的使用彼此相同的名字,一个库中定义的名字可能会与其他库中的相同名字冲突.为了避免冲突,可以将名字定义在namespace中. 2. 通过异常.我们能够将问题的检测和问题的解决分离,这样程序的问题检测部分可以不必了解如何处理问题. 有效使用异常处理需要理解: ■ 在抛出异常时会发生什么 ■ 在捕获异常时又会发生什么转载 2015-05-25 11:04:35 · 471 阅读 · 0 评论