younik要排号(set)

题目描述

Younik挂好号之后,就去找医生了。但是她没想到,看医生居然也要排队!
于是younik可怜兮兮地站在大厅里,盯着墙上的显示屏,显示屏会不停地打出名字,如果一个人被叫到但没进去,显示屏可能会叫他很多次。
你能告诉younik她是第几个被叫到的人吗?
Ps.如果一个人被叫了两次,他还是一个人,不能算两个人。(题目数据范围为200)

输入描述:

第一行是一个正整数n,表示显示屏会叫几次。
接下来n行,每行都是一个名字。

输出描述:

一个正整数,表示younik是第几个被叫到的人。不需要换行。

示例

输入:
6
zhangsan
lisi
wangwu
lisi
younik
liliu

输出:
4

思路

即数出现lisi之前有几个人名就可以,可以使用STL中的集合

代码

#include<bits/stdc++.h>
using namespace std;

int main()
{
    set<string> a;
    int n;
    cin>>n;
    string c;
    string name="younik";
    while(1)
    {
        cin>>c;
        if(c==name)break;
        a.insert(c);
    }
    cout<<a.size()+1;

}

set操作补充

//创建
set<类型> 变量名
begin()       返回set容器的第一个迭代器
end()      返回set容器的最后一个迭代器
clear()       删除set容器中的所有的元素
empty()    判断set容器是否为空
max_size()   返回set容器可能包含的元素最大个数
size()      返回当前set容器中的元素个数
rbegin     返回的值和end()相同
rend()     返回的值和rbegin()相同
//删除元素
.erase函数
.erase(iterator position,iterator position)
//且左闭右开
传一个参数时,返回值时被删元素的下一个元素的迭代器

string特有的一种用法
erase(0,1)0位置开始的1个元素,返回值是操作后的容器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值