STL学习(6):queue

    xiaoxiao2022-06-24  313

    STL学习网址:

    C语言中文网:http://c.biancheng.net/stl/

    STL中的queue队列容器

    队列是一种数据结构,具备队头和队尾。常见的有FIFO(先入先出)队列等。

    常用函数

    //(1)构造函数 queue(class T, class Container=deque<T>);//创建元素类型为T的空队列,默认容器是 deque stack(class T, class Container=deque<T>);//创建元素类型为T的空堆栈,默认容器是deque //(2)操作函数 //队列和堆栈共有函数: bool empty(); //如果队列(堆栈)为空返回true, 否则返回false int size(); //返回队列(堆栈)中元素数量 void push(const T& t); //把t元素压入队尾(栈顶) void pop(); //当队列(栈)非空情况下,删除队头(栈顶)元素 //队列独有函数: T& front(); //当队列非空情况下,返回队头元素引用 T& back(); //当队列非空情况下,返回队尾元素引用 //堆栈独有函数: T& top(); //当栈非空情况下,返回栈顶元素的应用

     

    #include <queue> void main() { queue<int> q; q.push(1); q.push(2); q.push(3); cout << "对头元素" << q.front() <<endl; cout << "队列的大小 " << q.size() <<endl; while (!q.empty()) { int tmp = q.front(); cout << tmp << " "; q.pop(); } }

    赋值数据类型:

    class Teacher { public: int age; char name[32]; void printT() { cout << "age :" << age <<endl; } } void main() { Teacher t1,t2,t3; t1.age = 31; t2.age = 32; t3.age = 33; queue<Teacher > q; q.push(t1); q.push(t2); q.push(t3); while (!q.empty()) { Teacher tmp = q.front(); tmp.printT(); q.pop(); } }

    容器适配器

    能成为queue基本容器类Container的条件是它应当支持size,empty,push_back,pop_front,front,back方法,可对数据的两端分别进行插入、删除操作,而deque、list都具有这些函数,所以它们可成为queue的基本容器类Container;

    能成为stack基本容器类Container的条件是它应当支持size,empty,push_back, pop_back,back方法,可对数据的一端进行插入、删除操作,而deque、list、vector都具有这些函数,所以它们可成为stack的基本容器类Container。

    注意:vector不能作为queue的基本容器类,因为vector没有pop_front方法。

    Queue基本函数操作示例

    #include <string> #include <list> #include <deque> #include <queue> using namespace std; template <class T, class Container>//队列遍历模板函数 void PrintQueue(queue<T, Container > obj) { while(!obj.empty()) { cout << obj.front() << "\t"; obj.pop(); } } void main() { string str = "a"; //字符串队列 queue<string, deque<string> > t; for(int i=0; i<4; i++) { t.push(str); str += "a"; } PrintQueue(t); //a aa aaa aaaa cout << endl; queue<float, list<float> > u;//符点队列 for(i=0; i<4; i++) { u.push(i+1); } PrintQueue(u); //1 2 3 4 }

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


    最新回复(0)