当前位置: 首页 > news >正文

STL之map(关联式容器)

map是一种关联式容器。由许多对的[key,value]组成,按照特定顺序排列,其键值独一无二,不可重复。在映射中,键值通常用于排序和唯一标识元素,而映射值存储与此键关联的内容,

键和映射值的类型可能不同。map通常实现为二叉搜索树,STL map底层用RB-tree实现。

 

网易校招笔试:从一篇文章里找出一个单词作为这篇文章的关键词,一个单词可以作为关键词当且仅当它在这篇文章中出现的频率不低于1%,现在他想知道有多少个不同的单词可以作为关键词。一个单词出现的频率=(某一单词出现次数/文章单词总数)*100% 

分析题目可知可以以单词作为键,

#include <iostream>
#include <map>
using namespace std;

int main()
{
	map<string, int> m;
	int num, res = 0;
	cin >> num;
	for (int i = 0; i < num; i++)
	{
		string s;
		cin >> s;
		if (m.count(s) == 1)
			m[s] += 1;
		else
			m[s] = 1;
	}
	map<string, int>::iterator i = m.begin();
	while (i != m.end())
	{
		if ((i->second*100) >= num)
			res++;
		i++;
	}
	cout << res;
	return 0; 
}

 

#include <iostream>
#include <map>
using namespace std;

void Print(map<string, int >& m)
{
	for (auto it = m.begin(); it != m.end(); it++)
	{
		pair<string, int> tmp = *it;
		cout << tmp.first << " " <<tmp.second<<endl;
	}
}

int main()
{
	map<string, int> m;
	int num, res = 0;
	cin >> num;
	for (int i = 0; i < num; i++)
	{
		string s;
		cin >> s;
		if (m.count(s) == 1) //查询当前元素(键)是否在容器中存在,加入存在 value+1
			m[s] += 1;
		else
			m[s] = 1; //不存在 就将该元素放入容器
	}
	Print(m);  //打印容器元素,可以看到容器中的元素是由某种规则排序的,默认从小到大
	map<string, int>::iterator i = m.begin();
	while (i != m.end())
	{
		if ((i->second * 100) >= num)
			res++;
		i++;
	}
	cout << res;
	return 0;
}

 

 

相关文章:

  • STL之unordered_map
  • 动态规划
  • 算法分析
  • 编写一个函数,实现将char类型的字符串,循环右移n个位置
  • 类构造、析构、赋值函数示例
  • 数组指针指针数组
  • LeeCode 20.有效的括号
  • LeeCode 26 删除排序数组中的重复项,返回数组新长度
  • LeeCode 27 移除元素,返回数组新长度
  • LeeCode 2125 合并两个(K个)有序链表
  • (10)STL算法之搜索(二) 二分查找
  • 单例模式(懒汉模式、饿汉模式)
  • 工厂模式抽象工厂
  • 链表翻转
  • LRU缓存算法
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Flannel解读
  • JavaScript对象详解
  • Java应用性能调优
  • JS专题之继承
  • Logstash 参考指南(目录)
  • spring boot 整合mybatis 无法输出sql的问题
  • Spring核心 Bean的高级装配
  • SQLServer插入数据
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 计算机在识别图像时“看到”了什么?
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 微服务框架lagom
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 正则学习笔记
  • 自动记录MySQL慢查询快照脚本
  • Spring第一个helloWorld
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #每日一题合集#牛客JZ23-JZ33
  • (k8s中)docker netty OOM问题记录
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Python) SOAP Web Service (HTTP POST)
  • (二)fiber的基本认识
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (接口自动化)Python3操作MySQL数据库
  • (四) 虚拟摄像头vivi体验
  • (一)RocketMQ初步认识
  • **python多态
  • .libPaths()设置包加载目录
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 项目如何优雅地设置条件编译符号?