1686: 2018蓝桥杯培训-STL应用专题-day 3 map作业题1

题目描述:

  STL库中有许多非常实用的函数,如sort,set,map,vector,queue等。

  此题为map的应用教学,题目如下:

  运动会开始了,1117势力因为忙于出题,某些有项目的同学没有及时赶到检录处检录,广播中播放了n次未及时检录的同学的名单。

  现在,需要聪明的你统计出共有多少个人未及时检录。

输入:

第一行读入一个n(1<=n<=100000)

接下来n行每行读入n个名字

输出:

一个整数代表未及时检录的同学的数量

样例输入:

5
zhangning
zhangning
zhangning
hezhong
lihaoyu
样例输出:

3
// ConsoleApplication1.cpp: 定义控制台应用程序的入口点。
//map内部使用红黑树实现,因此可以实现极为快速的查找。可以利用map键值的惟一性
//将要去重的对象作为键值插入到map中,插入失败时即为重复值,不过对象要满足“严格弱排序”。
//一般要对象及对象中的属性对象的“<”操作符进行重载,重载的“<”操作应满足“严格弱排序”。
//	map并不是用“ == ”操作符来判断两个对象是否相等的,而是两个对象相互都不“小于”时认
//	为两个对象相等。

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <map>
using namespace std;

int cnt = 1;//key从1开始
map<int, string> map_studnet;//关键字为int,值为string的map
map<int, string>::iterator iiter;//迭代器

bool judge(string a)
{
	bool flag = false;
	for (iiter = map_studnet.begin(); iiter != map_studnet.end(); ++iiter)
	{
		if (iiter->second == a)
		{
			flag = true;
		}
	}
	if (flag == true)
		return false;
	else
		return true;
}

void myscanf(string a)
{
	if (judge(a))
	{
		map_studnet.insert(map<int, string>::value_type(cnt++, a));//将不重复的name插入到map中
	}
}

int main()
{
	string name;
	int n;
	cin >> n;
	for (int i = 0; i < n; ++i)
	{
		cin >> name;
		myscanf(name);
	}

	cout << map_studnet.size() << endl;//输出map_student的大小

	return 0;
}


发布了88 篇原创文章 · 获赞 65 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览