zoukankan      html  css  js  c++  java
  • 5.1 stack,queue以及priority_queue

    *:stack

    使用要包含头文件stack,栈是一种先进后出的元素序列,删除和访问只能对栈顶的元素(最后一个添加的元素)进行,并且添加元素只能添加到栈顶。栈内的元素不能访问,要想访问先要删除其上方的所有元素,使之变成栈顶元素才可以。

    1)定义

    template<class T,class Cout=deque<T>>

    class stark{

           .......

    };

    第二个参数表明,在默认情况下,stack都是用deque来实现的。也可以用指定的vector和list来实现。但不拥有顺序容器的成员函数。

    2)成员函数

    除了所有容器都有的成员函数size和empty外,还有push,top,pop三个成员函数。

    3)例

    //program 19.5.1.1.cpp  stack用于转换十进制数到k进制数
    #include <iostream>
    #include <stack> //使用stack需要包含此头文件
    using namespace std;
    int main()
    {
        int n,k;
        stack<int> stk;
        cin >> n >> k;  //将n转换为k进制数 
        if( n == 0) {
            cout << 0;
            return 0;
        }
        while( n ) {
            stk.push( n % k);
            n /= k;
        }
        while( ! stk.empty ()) {
            cout << stk.top();
            stk.pop();
        }
        return 0;
    }

    **:queue

    使用必须包含queue头文件。队列queue是先进先出。删除和访问只能发生在队尾,添加动作只能在队尾进行。

    1)定义

    template<class T,class Cout=deque<T>>

    class queue{

       .........

    };

    2)成员函数

    和stack类似,差别在于push发生在队尾,pop发生在队头。

    ***:priority_queue

    1)定义

    2)例

    //program 19.5.2.1.cpp  priority_queue用法示例
    #include <queue>
    #include <iostream>
    using namespace std;
    int main()  
    {
        priority_queue<double> pq1;
        pq1.push(3.2); pq1.push(9.8); pq1.push(9.8); pq1.push(5.4);
        while( !pq1.empty() ) {
            cout << pq1.top() << " ";    
            pq1.pop();
        } //上面输出 9.8 9.8 5.4 3.2
        cout << endl;
        priority_queue<double,vector<double>,greater<double> > pq2;
        pq2.push(3.2); pq2.push(9.8); pq2.push(9.8); pq2.push(5.4);
        while( !pq2.empty() ) {
            cout << pq2.top() << " ";    
            pq2.pop();
        }
        //上面输出 3.2 5.4 9.8 9.8
        return 0;
    }
  • 相关阅读:
    gvim : invalid input string
    端口
    Sequence Overview
    vi的使用
    Ubuntu安装CodeBlocks相关问题总结
    中断
    Ubuntu Software Repository
    UVA 12299 RMQ with Shifts
    UVA 12293 Box Game
    POJ 3468 A Simple Problem with Integers (1)
  • 原文地址:https://www.cnblogs.com/by-dxm/p/5475572.html
Copyright © 2011-2022 走看看