容器(栈 队列 优先队列)

容器(1)

栈 队列 优先队列

//坚持

#include <iostream>
using namespace std;
#include<cstring>

//栈 - stack
#include<stack> //头文件

//队列 - queue
#include<queue>

//优先队列 - priority_queue
#include<concurrent_priority_queue.h>

void test01()
{
    //定义
    stack<int> s;

    //放入
    s.push(78);  //放入数字78
    s.push(89);

    cout << "栈的长度为:" << s.size() << endl;

    //返回栈顶的值
    cout << "栈顶的值为 " << s.top() << endl;

    //删除
    s.pop();  //删除栈顶的数据

    //返回长度
    cout << "栈的长度为:" << s.size() << endl;

    s.empty(); //清空
}

//测试
void test01A()
{
    int n;
    char ch = '1';

    cin >> n;
    getchar(); //获取数据放入缓存区

    while (n--) //将n 个字符放入栈中
    {
        stack<char> s;
        while (true)
        {
            ch = getchar();   //一次读一个字符(从缓冲区中)
            if (ch == ' ' || ch == '\n' || ch == EOF)  //结尾输出全部
            {
                while (!s.empty())  //当栈不为空
                {
                    printf("%c", s.top());
                    s.pop(); //输出一次便删除
                }
                if (ch == '\n' || ch == EOF)
                    break;
            }
            else
                s.push(ch);  //放入栈中
            printf(" ");
        }
    }
}

//队列(queue) - 先进先出
void test02()
{
    //定义
    queue<int> q;

    //放入
    q.push(78);  //放入数字78
    q.push(89);

    cout << "队列的长度为:" << q.size() << endl;

    //返回队列顶的值
    cout << "队列顶的值为 " << q.front() << endl;

    //返回队列尾的值
    cout << "队列尾的值为 " << q.back() << endl;

    //删除
    q.pop();  //删除队列顶的数据

    //返回长度
    cout << "队列的长度为:" << q.size() << endl;

    q.empty(); //清空
}

//优先队列(priority_queue)push和pop都会调整
void test03()
{
    priority_queue<int> p;
    p.push(45);
    p.push(467);
    p.push(67);

    //该队列没有 front()函数

    for (int i = 0; i < p.size(); i++) 
        //p.size()返回的元素个数少一个 
    {
        cout << p.top() << " ";
        p.pop();
    }
    cout << "长度为:" << p.size() << endl;  //长度为 元素个数减一
}

int main()
{
    /*test01();*/
    //test01A();
    test03();
   return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值