C++之Queue
来源:互联网 发布:淘宝网商城摩托车 编辑:程序博客网 时间:2024/05/22 15:05
转自:http://hi.baidu.com/nicker2010/item/a53293f1810ee8cea935a2eb
本文介绍STL Queue.
Queue(也称FIFO,即先进先出)的声明如下:
template<typename _Tp, typename _Sequence = deque<_Tp> >
class queue;
第一个template代表元素类型
第二个template代表stack内部存放元素所用的实际容器,缺省用deque
实际上,Queue只是很单纯的把各项操作转换为内部容器的对应调用。下面是部分源代码:
protected:
_Sequence c; ////实际容器
public:
bool empty() const { return c.empty(); }
size_type size() const { return c.size(); }
reference front()
{
__glibcxx_requires_nonempty();
return c.front();
}
const_reference front() const
{
__glibcxx_requires_nonempty();
return c.front();
}
reference back()
{
__glibcxx_requires_nonempty();
return c.back();
}
const_reference back() const
{
__glibcxx_requires_nonempty();
return c.back();
}
void push(const value_type& __x)
{ c.push_back(__x); }
void pop()
{
__glibcxx_requires_nonempty();
c.pop_front();
}
我们可以使用任何序列式容器来支持stack,
只要他们支持front(),back(),push_back(),pop_front()等动作就行。
如以list支持queue:
std::queue<string,list<string> > stringQueue;
核心接口:
1.push()
2.front()
3.back()
4.pop()
5.size()
6.empty()
7.comparision(const queue& q1,const queue& q2) ///两个同型queue的比较,
comparision可以是:==,!=,<,>,<=,>=
(如果两个queue的size()相等并且对应元素也相等则它们相等;
比较基于字典序,参考lexicographical_compare())
简单的应用:
void testSTLQueue()
{
queue<string> stringQueue;
stringQueue.push("These ");
stringQueue.push("are ");
stringQueue.push("more ");
cout<<stringQueue.front();
stringQueue.pop();
cout<<stringQueue.front();
stringQueue.pop();
stringQueue.push("four ");
stringQueue.push("words!");
stringQueue.pop();
cout<<stringQueue.front();
stringQueue.pop();
cout<<stringQueue.front();
stringQueue.pop();
cout<<"\nNumber of elements in Queue: "<<stringQueue.size()<<endl;
}
- C++STL之queue用法
- C++STL之queue队列容器
- queue.c
- queue.c
- c-queue?
- C/C++-----------00queue-------
- [Codeforces Round #101 (Div. 2) C. Queue] STL之vector
- C++(24):STL初步之stack、queue
- Queue-C++template1
- Queue-C++template
- Queue-c数组
- queue-c链式队列
- #include<queue> 【c++】
- c++queue容器介绍
- freeBSD queue.c--定时器
- [C++] Stack / queue / priority_queue
- QUEUE C语言实现
- #include<queue> 【c++】
- Cassandra 分布式数据库详解,第 1 部分:配置、启动与集群
- java路径问题以及java对文件的基本操作信息
- java 每天定时执行任务
- 开源 免费 java CMS - FreeCMS技术架构
- 简单的MVC就够了吗?浅谈service Layer的引入
- C++之Queue
- List<Map> 自定义排序
- xml内容解析,包含命名空间时需特殊处理(dom4j)
- DAO层,Service层,Controller层、View层
- java配置文件读取和项目路径的多种获取方式
- C++之Stack
- Java里如何实现多继承里
- java常见面试题(转)搜集汇总
- java 字符串split有很多坑,使用时请小心!!