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

前言

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

解题报告

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() //查看是否为空
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();		//返回最后一个元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值