stl库

简介: stl库

sort

读入n条学生成绩记录,包括学生姓名,总成绩,语文,数学和英语成绩,要求按总成绩从高到低输出ñ条记录,每条记录占一行。总成绩相同时按语文成绩从高到低输出,语文成绩相同时按数学成绩从高到低输出。 (没有两个人的成绩完全一样)


33.png

#include<bits/stdc++.h>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//sort 函数排序
struct stu
{
    string  zz;//姓名
    int z,a,b,c;//总分,语文,数学,英语
}I[105];
bool cmp(stu a,stu b)
{
    if(a.z==b.z)//按照总分大的排序,总分一样的话,按照语文从大到小排序,,,,,,
    {
        if(a.a==b.a)
        {
            if(a.b==b.b)
                return a.c>b.c;
            return a.b>b.b;
        }
        return a.a>b.a;
    }
    return a.z>b.z;
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>I[i].zz>>I[i].z>>I[i].a>>I[i].b>>I[i].c;
    sort(I,I+n,cmp);
    for(int i=0;i<n;i++)
        cout<<I[i].zz<<' '<<I[i].z<<' '<<I[i].a<<' '<<I[i].b<<' '<<I[i].c<<endl;
    return 0;
}

vector

字符串有些是对称的,有些不是对称的,请将那些对称的字符串安从小到大的顺序输出,字符串先以长度论大小,如果长度相等,再以ASCII码值为排序标准;


34.png

//输入n个字符串,然后按照以下规则输出  对称  的字符串
//规则:优先输出长度小的,如果长度相等,输出字典序小的
#include<bits/stdc++.h>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
//排序!!!!!!!!!!!!
bool cmp(string a,string b)
{
    return a.length()!=b.length()? a.length()<b.length():a<b;
}
int main()
{
    int n;
    cin>>n;
    string s;//输入的
    string temp;//交换的
    vector<string>v;//用动态数组存储将要输出的对称的字符串
    for(int i=0;i<n;i++)
    {
        cin>>s;
        temp=s;//string直接赋值
        reverse(temp.begin(),temp.end());//翻转
        if(s==temp)
            v.push_back(s);
    }
    sort(v.begin(),v.end(),cmp);//对vector进行sort排序
    for(int i=0;i<v.size();i++)
        cout<<v[i]<<endl;//直接输出
    return 0;
}

Huffman树

/*
//哈夫曼树
//找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,
//然后将它们的和加入到{pi}中。这个过程的费用记为pa  +  pb。 
//2.  重复步骤1,直到{pi}中只剩下一个数
#include<bits/stdc++.h>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(int a,int b)//vector的排序
{
    return a>b;
}
int main()
{
    int n;
    cin>>n;
    vector<int>q;
    int a;
    int ans=0;
    for(int i=1;i<=n;i++)
    {
        cin>>a;
        q.push_back(a);
    }
    while(q.size()>1)
    {
        //方法一
        sort(q.begin(),q.end()); //默认从小到大排序也行
        int i=q[0];//访问的话,就直接数组访问就好啦
        q.erase(q.begin());
        int j=q[0];
        q.erase(q.begin());
        q.push_back(i+j);
        //方法二
        //学姐讲的方法
        //从大到小排序
        sort(q.begin(),q.end(),cmp);
        int t=q[q.size()-1]+q[q.size()-2];
        q.pop_back();
        q.pop_back();
        q.push_back(t);
        ans += t;
    }
    cout<<ans;
    return 0;
}
*/

map

//输入几个人名,输出一共有多少个人(不重复)
//map自身去重
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string s;
    map<string,int>a;//定义map!!!!!!!!!!!!!!!!!!
    while(n--)
    {
        cin>>s;
        a[s]=1;//直接赋值进去
    }
    cout<<a.size();
    return 0;
}
//输入几个人名,输出人名和此人名出现的次数
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    string s;
    map<string,int>a;
    set<int>::iterator it;//迭代器
    while(n--)
    {
        cin>>s;
        if(a.count(s))//如果a中已经有这个人名了,数值就+1
            a[s]++;
        else      //如果没有这个人,就把这个人加到set中去,然后赋值1
            a[s]=1;
    }
    //iterator
    //输出!!!!!!!!!!!!
    for(auto  it=a.begin();it!=a.end();it++)
        cout<<it->first<<' '<<it->second<<endl;
    return 0;
}
相关文章
|
2天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
265 116
|
17天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
11天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
655 220
|
5天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
325 32
Meta SAM3开源:让图像分割,听懂你的话
|
9天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1512 157
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
893 61
|
7天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
290 140