摘要: 1、定义 class queue<>实作为一个queue(也成为FIFO,先进先出)。可以使用push()将任意数量的元素置入queue中,也可以使用pop()将元素以其插入顺序从容器中移除。 queque有两个参数,第一个参数是元素类型,带有默认值的第二个参数用来定义queuen内部存放元素用的实 阅读全文
posted @ 2017-06-11 16:34 Memset 阅读(3879) 评论(0) 推荐(0) 编辑
摘要: 1、定义 class stack<> 实作出一个stack(也成为LIFO,后进先出),你可以使用push()将任意数量的元素置入stack中,也可以使用pop()将元素依次插入次序反序从容器移除(即后进先出)。 在<stack>中,class stack定义如下: 第一个template参数代表元 阅读全文
posted @ 2017-06-11 16:32 Memset 阅读(12289) 评论(0) 推荐(0) 编辑
摘要: c++提供了各具特长的容器,那么我们该如何选择最佳的容器? 缺省状态下应该选择vector,因为vector内部结构最简单,并允许随机存取,所以数据的存取十分方便,数据的处理也快。 如果经常要在头部和尾部安插和移动元素,应该采用deque,如果希望元素被移除时,容器能够自动缩减内存,也应该使用deq 阅读全文
posted @ 2017-06-11 16:29 Memset 阅读(995) 评论(0) 推荐(1) 编辑
摘要: 1、结构 Map和multimap将key/value pair(键值/实值 队组)当作元素,进行管理。他们根据key的排序准则将元素排序。multimap允许重复元素,map不允许。 元素要求: key/value必须具有assigned(可赋值)和copyable(可复制的)性质。 对于排序而言 阅读全文
posted @ 2017-06-11 16:26 Memset 阅读(6790) 评论(2) 推荐(1) 编辑
摘要: 1、结构 set和multiset会根据特定的排序原则将元素排序。两者不同之处在于,multisets允许元素重复,而set不允许重复。 只要是assignable、copyable、comparable(根据某个排序准则)的型别T,都可以成为set或者multisets的元素。如果没有特别的排序原 阅读全文
posted @ 2017-06-11 16:08 Memset 阅读(39453) 评论(0) 推荐(18) 编辑
摘要: 1、结构 list使用一个double linked list(双向链表)来管理元素。 2、 list 能力 list内部结构和vector或deque截然不同,所以与他们的区别: list不支持随机存取,需要存取某个元素,需要遍历之前所有的元素,是很缓慢的行为。 任何位置上(不止是两端)安插和删除 阅读全文
posted @ 2017-06-11 15:48 Memset 阅读(1801) 评论(0) 推荐(0) 编辑
摘要: 1、结构 容器deque和vector非常相似,也是采用动态数组来管理元素,提供随机存取,有着和vector几乎一样的接口,不同的是deque的动态数组头尾都开放,因此可以在头尾都可以进行快速的安插和删除。 为了获取这种能力,deque通常实作为一组独立区块,第一区块朝某方向扩展,最后一区块朝另一方 阅读全文
posted @ 2017-06-11 15:33 Memset 阅读(641) 评论(0) 推荐(0) 编辑
摘要: 1、结构 vector模塑出一个动态数组,因此,它本身是“将元素置于动态数组中加以管理”的一个抽象概念。vector将其元素复制到内部的dynamic array中。元素之间总存在某种顺序,所以vector是一种有序群集。vector支持随机存取,因此只要知道位置,可以在常数时间内存取任何一个元素。 阅读全文
posted @ 2017-06-11 15:17 Memset 阅读(2790) 评论(0) 推荐(2) 编辑
摘要: 1、容器的共通能力 1、 所有的容器都是“value”语意,而不是“reference”语意。容器进行元素的安插操作时,内部实施的都是拷贝操作,置于容器内。因此STL容器的每个元素都必须能被拷贝。如果你打算存放的对象不具有public copy构造函数,或者你要的不是副本(例如你要的是被多个容器共同 阅读全文
posted @ 2017-06-11 14:57 Memset 阅读(542) 评论(0) 推荐(0) 编辑