• 《七月集训》第二十二日——有序集合


    前言

    这是七月集训的第日,今日的训练内容是 有序集合

    解题报告

    1.力扣1418

    原题链接

    1418. 点菜展示表

    题目概述

    给你一个数组 orders,表示客户在餐厅中完成的订单,确切地说, orders[i]=[customerNamei,tableNumberi,foodItemi] ,其中 customerNamei 是客户的姓名,tableNumberi 是客户所在餐桌的桌号,而 foodItemi 是客户点的餐品名称。

    请你返回该餐厅的 点菜展示表 。在这张表中,表中第一行为标题,其第一列为餐桌桌号 “Table” ,后面每一列都是按字母顺序排列的餐品名称。接下来每一行中的项则表示每张餐桌订购的相应餐品数量,第一列应当填对应的桌号,后面依次填写下单的餐品数量。

    注意:客户姓名不是点菜展示表的一部分。此外,表中的数据行应该按餐桌桌号升序排列。

    解题思路

    刚开始学习使用STL,先记录题目和一些map和set相关的内容:

    map

    map的参数有两个部分,一个部分是索引,另一个部分是所需要存放的值 map<索引,值> ,即map可以实现一对一的hash表。并且,map内部是一颗红黑树,也就是其中的内容都是有序的。
    记录一下map中常用的成员函数:

    begin() //返回指向map头部的迭代器,遍历的时候经常需要用到
    end() //返回指向map尾部后一位的迭代器
    rebegin() //返回指向map头部的迭代器
    rend() //返回指向map尾部后一位的迭代器
    size() //返回map中元素的个数
    erase() //删除一个元素
    find() //查找一个元素
    empty() //查看是否为空
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    set

    set实际上就是一个排序好了的,并且没有重复元素的简单集合,同样由红黑树实现,非常适合用于检索一个元素是否出现在了集合之中。而按照默认的升序排序好了也就是说最小的元素在set的首部。
    同样记录一下其成员函数:

    insert(x);	    //将x插入q中
    erase(x);		//删除q中的x元素,返回0或1,0表示set中不存在x
    clear();		//清空q
    empty();		//判断q是否为空,若是返回1,否则返回0
    size();		    //返回q中元素的个数
    find(x);		//在q中查找x,返回x的迭代器,若x不存在,则返回指向q尾部的迭代器即 q.end()
    lower_bound(x); //返回一个迭代器,指向第一个键值不小于x的元素
    upper_bound(x); //返回一个迭代器,指向第一个键值大于x的元素
    rend();		    //返回第一个元素的的前一个元素迭代器
    begin();	    //返回指向q中第一个元素的迭代器
    end();		    //返回指向q最后一个元素下一个位置的迭代器
    rbegin();		//返回最后一个元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    notion database 必知必会
    Qt+ECharts开发笔记(一):ECharts介绍、下载和Qt调用ECharts基础柱状图Demo
    Django和Mysql数据库
    openGauss每日一练第1天 | openGauss数据库状态查看
    这几个点让我买了Watch Ultra
    【计算机网络】HTTP协议以及无状态问题解决
    wireshark远程抓包
    我的项目——不爱听书系统
    【网页设计】期末大作业html+css(音乐网站)
    污水处理厂3D数字孪生三维可视系统降低设备风险隐患
  • 原文地址:https://blog.csdn.net/smallwind256/article/details/126042214