首页 > 编程语言 >C++U4-第09课-STL容器

C++U4-第09课-STL容器

时间:2023-12-19 11:24:53浏览次数:39  
标签:STL U4 09 cin st int push using main

学习目标

 STL

 

 栈stack

 

[入栈出栈]

 

【算法分析】
栈的基本操作。

【参考代码】
#include <bits/stdc++.h>
using namespace std;

int main() {
    stack<int>st;
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int x;
        cin >> x;
        st.push(x);
    }
    while (!st.empty()) {
        cout << st.top() << " ";
        st.pop();
    }
    return 0;
}
View Code

[模拟栈操作]

 

栈的基本操作,要注意输出格式。

【参考代码】
#include <bits/stdc++.h>
using namespace std;

int main() {
    stack<int>st;
    int n;
    cin >> n;
    while (n--) {
        string option;
        cin >> option;
        if (option == "push") {
            int x;
            cin >> x;
            st.push(x);
        }
        else if (option == "pop") {
            if (st.empty()) cout << "pop fail" << '\n';
            else {
                cout << "pop " << st.top() << '\n';
                st.pop();
            }
        }
        else if (option == "top") {
            if (st.empty()) cout << "top fail" << '\n';
            else cout << "top = " << st.top() << '\n';
        }
        else if (option == "size") {
            cout << "size = " << st.size() << '\n';
        }
        else {
            if (st.empty()) cout << "yes" << '\n';
            else cout << "no" << '\n';
        }
    }
    return 0;
}
View Code

[后缀表达式求值]

 

【算法分析】
后缀表达式求值的基本操作。

【参考代码】
#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    cin >> s;
    int num = 0;
    stack<int> st;
    for (int i = 0; i < s.length() - 1; i++) {
        if (s[i] == '.') {
            st.push(num);
            num = 0;
        }
        else if (s[i] >= '0' && s[i] <= '9') {
            num = num * 10 + s[i] - '0';
        }
        else {
            int r = st.top(); st.pop();
            int l = st.top(); st.pop();
            if (s[i] == '-') {
                st.push(l - r);
            }
            else if (s[i] == '+') {
                st.push(l + r);
            }
            else if (s[i] == '*') {
                st.push(l * r);
            }
        }
    }
    cout << st.top();
    return 0;
}
View Code

 

队列queue

 

 

[取牌游戏]

 

【算法分析】
用队列模拟取牌的操作。每次处理发队首的牌,然后将后面的 p 张牌依次放到队尾。重复上面的过程,直到队列为空。

【参考代码】
#include <bits/stdc++.h>
using namespace std;

int main() {
    queue<int> q;
    int k, n, p;
    cin >> k >> n >> p;
    for (int i = 1; i <= k; i++) q.push(i);
    while (q.size()) {
        cout << q.front() << " ";
        q.pop();
        if (q.size()) {//要队列里有元素才能访问队首
            for (int i = 0; i < p; i++) {
                int x = q.front();
                q.pop();
                q.push(x);
            }
        }
    }
    return 0;
}
View Code

 

优先队列:priority_queue

 

 

 

 

[合并果子]

 

【算法分析】
分析题目可以发现,每次合两个苹果数最小的堆消耗的体力最少。可以使用优先队列来维护最小数目的苹果堆。

【参考代码】
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    priority_queue<int, vector<int>, greater<int> >q;
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        q.push(x);
    }
    int ans = 0;
    while (q.size() > 1) {
        int x = q.top();
        q.pop();
        int y = q.top();
        q.pop();
        ans += x + y;
        q.push(x + y);
    }
    cout << ans;
    return 0;
}
View Code

 

总结

 本节课作业讲解视频及分析

链接:https://pan.baidu.com/s/1SfdLzP9m2YpS_XBwwoHwsw?pwd=i1vt
提取码:i1vt

 

标签:STL,U4,09,cin,st,int,push,using,main
From: https://www.cnblogs.com/jayxuan/p/17913258.html

相关文章

  • 今年倒闭了1.09万家芯片公司.... | 百能云芯
    近日,据钛媒体报道,数据显示,中国芯片产业正经历着一轮明显的调整,行业迎来了寒冬。截至2023年12月11日,中国已有1.09万家芯片相关企业工商注销、吊销,同比增加69.8%,较2022年的5746家增长89.7%。与此同时,同期新注册的芯片企业达6.57万家,同比增加9.5%,这表明芯片行业正在经历大规模的企业出......
  • JavaWeb - Day09 - Mybatis - 基础操作、XML映射文件、动态SQL
    01.Mybatis-基础操作-环境准备需求需求说明:根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。通过分析以上的页面原型和需求,我们确定了功能列表:查询根据主键ID查询条件查询新增更新删除根据主键ID删除根据......
  • 60道C++STL高频题整理(附答案背诵版)
    1.请解释vector容器和它的特点。在C++中,vector是标准模板库(STL)的一部分,它是一个动态数组。与普通数组相比,它的大小可以在运行时动态改变。下面是vector的一些主要特点和应用场景:动态大小:与传统的数组不同,vector可以根据需要动态地扩展或缩减大小。这意味着你不需要事先知道数......
  • 2023-2024-1 20231309 《计算机基础与程序设计》第十二周学习总结
    2023-2024-120231309《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标自学教材《C语言程序设计》第11章并完成云班课测......
  • 学期2023-2024-1 20231409 《计算机基础与程序设计》第十二周学习总结
    学期2023-2024-120231409《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十二周作业这个作业的目标自学《C语言程序设计》第11章作业正文https:......
  • NVIDIA RTX4090,你能用它做什么?
    介绍什么是NVIDIARTX4090是一款先进的图形处理单元(GPU),它具有强大的性能和功能,可以用于多种用途。本文的二级标题将介绍NVIDIARTX4090的定义、特点、以及它在图形渲染、深度学习、虚拟现实等领域的应用。通过这些介绍,读者将能够全面了解NVIDIARTX4090的优势和潜力,以及它为用户提......
  • C++常用STL容器
    1.queue#include<queue>usingnamespacestd;queue<int>q;常用方法1.size()q.size()值为所包含的元素的个数2.front()q.front()头元素3.back()q.back()尾元素4.push()q.push(value)将value加入队列q中5.pop()q.pop()将头元素弹出队列q中测试代码:#include<i......
  • P5901 [IOI2009] Regions
    [IOI2009]RegionsLuoguP5901题目描述联合国区域发展委员会(TheUnitedNationsRegionalDevelopmentAgency,UNRDA)有一个良好的组织结构。它任用了\(N\)名委员,每名委员都属于几个地区中的一个。委员们按照其资历被编号为\(1\)到\(N\),\(1\)号委员是主席,资历最高。委员......
  • 遍历utf-8编码下的所有汉字得出的个数是20901个,最终发现实际里面多数是不认识的,常用汉
    utf-8编码下的汉字个数是多少?从正则表达式可以看出  4E00-9FA5实用php遍历一下所有汉字1<?php2//4E00-9FA53//输出所有汉字4header('Content-Type:text/html;charset=utf8');//非必要5$start=hexdec('4e00');//等于0x4e00;hexdec是16进制转为10进制......
  • testlogger分析
    功能:一、将loggger和ctx作为pair放到步书写器AsyncLogWrite的list中:List<std::pair<LogContextPtr,Logger*>>_pending;1.InfoL<<"测试std::cout风格打印:";#defineInfoLWriteL(::toolkit::LInfo)--->#defineWriteL(level)::toolkit::LogContextCapture......