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月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
74 5
|
2月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
69 1
|
2月前
|
算法 编译器 C语言
STL基础介绍
STL基础介绍
48 0
|
4月前
|
存储 算法 编译器
|
4月前
|
算法 编译器 程序员
STL 简介(标准模板库)
STL 简介(标准模板库)
76 9
|
6月前
|
存储 算法 C++
C++一分钟之-标准模板库(STL)简介
【6月更文挑战第21天】C++ STL是高效通用的算法和数据结构集,简化编程任务。核心包括容器(如vector、list)、迭代器、算法(如sort、find)和适配器。常见问题涉及内存泄漏、迭代器失效、效率和算法误用。通过示例展示了如何排序、遍历和查找元素。掌握STL能提升效率,学习过程需注意常见陷阱。
63 4
|
6月前
|
存储 算法 大数据
STL标准库之《deque原理与实战分析》
STL标准库之《deque原理与实战分析》
54 0
|
7月前
|
存储 算法 C++
高效利用C++ STL库:标准模板库的使用技巧
本文介绍了C++ STL(标准模板库)的高效使用技巧,包括选择合适的容器类型、使用`emplace_back`而非`push_back`、预分配容器空间和范围for循环遍历容器。此外,还讨论了STL算法的运用,如用算法替代手动循环、使用lambda表达式和进行容器操作。通过这些技巧,开发者可以提升C++代码的性能和可读性。
|
7月前
|
存储 算法 C++
C++ STL库的介绍和使用(下)
C++ STL库的介绍和使用
48 1
|
7月前
|
存储 算法 前端开发
C++ STL库的介绍和使用(上)
C++ STL库的介绍和使用
82 0