栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

acm课程笔记-c++STL

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

acm课程笔记-c++STL

  1. 简要介绍:

    1. STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。为广大C++程序员们提供了一个可扩展的应用框架,高度体现了软件的可复用性。

    2. 序列式容器:vector,list,stack,queue, string

    3. 关联式容器:set,mapSTL迭代器

    4. 算法:容器内查找、排序、删除、替换(四种常见操作)

    (优势:代码量会少很多,而且简洁,用系统自带的库里的容器还可以避免超限情况)

  2. 容器对比:(以vector和list为例);

    类别vectorlist
    底层实现动态数组双向列表,非连续空间
    新增和删除元素可能需要内存申请和释放、拷贝旧数据,效率较低很快
    访问元素支持下标随机访问不支持下标随机访问
    适用场景高效的随机访问,效率更高需要高效的插入删除

应用实例:(list)

  1. BUCTOJ 2529: 寻找第K大的数题目描述:要求在N个不重复的整数中,找出第K大的整数 ,其中0

    #include 
    #include 
    #include 
    using namespace std;
    
    int main()
    {
        int n,k;
        cin >> n >> k;
        vectordata;
        for (int i = 0;i < n;i++)
        {
            int t;
            cin >> t;
            data.push_back(t);
            
        }
        sort(data.begin(),data.end());
        cout << data[n-k]< 
  2. map

BUCTOJ 2300: 销售排行榜题目描述:你的任务是帮助淘宝网店店长整理销售数据,根据累计的销售记录,将所有商品按销售数量降序排列。输入格式:输入包括多行数据(行数小于100000),每行数据包括4个信息,分别是商品名称、销售数量、单价、成交日期;商品名称由小写字母组成,且不超过100个字符,销售数量和单价都是正整数,且小于10000。输出格式:输出包括多行数据,将所有在输入中出现的商品按销售数量降序排列,每行的信息包括商品名称、销售数量、销售额

#include 
#include
#include
using namespace std;
struct sell
{
    int number;
    int amount;
};

int main()
{
    
    string goodname,date;
    int salenumber,price;
    map mp;
    while (cin >> goodname >> salenumber >> price >> date)
    {
        if (mp.find(goodname) == mp.end())
        {
            sell s;
            s.number = s.amount = 0;//初始销售额为0
            mp[goodname] = s;
        }
        //累加销售额
        mp[goodname].number += salenumber;
        mp[goodname].amount += (price*salenumber);
    }
    while (mp.size() > 0)
    {
        //找到销售额最大的,输出,然后删除
        map::iterator itmax = mp.begin();
        for (map:: iterator it = mp.begin();it != mp.end() ;it++)
        {
            if (it->second.number > itmax ->second.number)
            {
                itmax = it;
            }
        }
        cout << itmax->first << " " << itmax->second.number << " " << itmax->second.amount << endl;
        mp.erase(itmax);
        
    }
    
    
    
    
    
    return 0;
    
    
    
    
}

      

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/867746.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号