STL容器和迭代器用法归纳(3)
2008-03-02 21:49
260 查看
STL提供了三个容器适配器:queue、priority_queue、stack。这些适配器都是包装了某个顺序容器的包装器(适配器:将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作)。适配器没有提供迭代器,也不能同时插入或删除多个元素。
五、queue:提供了标准的“先进先出”(FIFO)语义。在<queue>头文件中定义,形式如下:
第一个参数指定要在queue中存储的类型,第二个参数规定queue适配的底层容器,可供选择的容器只有dequeue和list。对大多数用途使用默认的dequeue。
1.queue接口很简单:push,pop,back,front,size,empty。
注意的是,pop不返回弹出的元素。如果想保留一个副本,就须先用front获得队头元素。
2.如果想对实际生活中的“先来先服务”语义建模,就应当使用一个队列结构。其插入删除元素都较快(常量时间)。
六、priority_queue:也是一个队列,其元素按有序顺序排列。其不采用严格的FIFO顺序,给定时刻位于队头的元素正是有最高优先级的元素。如果两个元素有相同的优先级,那么它们在队列中的顺序就遵循FIFO语义。在<queue>头文件中定义,形式如下:
默认适配的底层容器是vector,也可以使用deque,list不能用,因为priority_queue要求能对元素随机访
问以便进行排序。
1. 与queue相比,priority_queue提供的接口还少一个。push和pop允许分别插入和删除元素,top会返回
队头元素的一个const引用。同时,它也支持size和empty。
2.优先级队列用于对一些超常的队列建模。它的插入和删除一般都比简单队列的插入和删除慢,因为必须对元素
重新调整顺序,以支持按优先级排序。
七、stack:提供了标准的“后进先出”(LIFO)语义。在<stack>头文件中定义,形式如下:
可以使用三个标准顺序容器中的任何一个作为stack的底层模型。
1. 其提供的接口与queue基本相同。只是stack提供的是top,而不是front,毕竟两者所表现的语义不同。
2.如果想对实际生活中的“先来后服务”语义建模,就应当使用栈。其插入删除元素都较快(常量时间)。
五、queue:提供了标准的“先进先出”(FIFO)语义。在<queue>头文件中定义,形式如下:
template<typename T, typename Container = deque<T> > class queue;
第一个参数指定要在queue中存储的类型,第二个参数规定queue适配的底层容器,可供选择的容器只有dequeue和list。对大多数用途使用默认的dequeue。
1.queue接口很简单:push,pop,back,front,size,empty。
queue q1; q1.push( 10 ); q1.push( 20 ); q1.push( 30 ); queue ::size_type i; i = q1.size( ); i = q1.front( ); q1.pop( );
注意的是,pop不返回弹出的元素。如果想保留一个副本,就须先用front获得队头元素。
2.如果想对实际生活中的“先来先服务”语义建模,就应当使用一个队列结构。其插入删除元素都较快(常量时间)。
六、priority_queue:也是一个队列,其元素按有序顺序排列。其不采用严格的FIFO顺序,给定时刻位于队头的元素正是有最高优先级的元素。如果两个元素有相同的优先级,那么它们在队列中的顺序就遵循FIFO语义。在<queue>头文件中定义,形式如下:
template<typename T, typename Container = vector<T>, typename Compare = less<typename Container::value_type> > class priority_queue;
默认适配的底层容器是vector,也可以使用deque,list不能用,因为priority_queue要求能对元素随机访
问以便进行排序。
1. 与queue相比,priority_queue提供的接口还少一个。push和pop允许分别插入和删除元素,top会返回
队头元素的一个const引用。同时,它也支持size和empty。
2.优先级队列用于对一些超常的队列建模。它的插入和删除一般都比简单队列的插入和删除慢,因为必须对元素
重新调整顺序,以支持按优先级排序。
七、stack:提供了标准的“后进先出”(LIFO)语义。在<stack>头文件中定义,形式如下:
template<typename T, typename Container = deque<T> > class stack;[/code]
可以使用三个标准顺序容器中的任何一个作为stack的底层模型。
1. 其提供的接口与queue基本相同。只是stack提供的是top,而不是front,毕竟两者所表现的语义不同。
2.如果想对实际生活中的“先来后服务”语义建模,就应当使用栈。其插入删除元素都较快(常量时间)。
相关文章推荐
- STL容器和迭代器用法归纳(1)
- STL容器和迭代器用法归纳(2)
- 标准模板库 STL-1 编程题#1(Coursera 程序设计与算法 专项课程3;用法:迭代器 ostream_iterator,容器 set)
- stl中pair容器的用法
- STL 容器和迭代器连载1_简介
- STL 容器和迭代器连载7_容器大小的操作
- 重学C++Primer笔记10---容器常用用法总结与归纳
- 迭代器失效(1)-小心使用STL容器的erase()
- STL中的容器、迭代器与算法
- STL之list容器函数用法详解
- C++STL总结(附带容器迭代器泛型算法详情链接【未完成】)
- 泛型编程与STL--各类容器迭代器失效的场景
- C/C++STL常用容器用法总结
- Map容器的用法(STL)
- 各容器与迭代器的用法
- C++STL中vector容器 assign()函数的用法
- 关于stl容器中迭代器的删除崩溃问题
- STL中 vector map 等容器的内部实现 以及其 迭代器失效场景【2013.10.22】
- STL — vector容器用法详解
- 【C/C++学院】0828-STL入门与简介/STL容器概念/容器迭代器仿函数算法STL概念例子/栈队列双端队列优先队列/数据结构堆的概念/红黑树容器