STL之map篇
度熊所居住的 D 国,是一个完全尊重人权的国度。以至于这个国家的所有人命名自己的名字都非常奇怪。一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每一个字符串,也都是这个人的名字。例如,如果一个人名字是 ACM,那么 AMC, CAM, MAC, MCA, 等也都是这个人的名字。在这个国家中,没有两个名字相同的人。
度熊想统计这个国家的人口数量,请帮助度熊设计一个程序,用来统计每一个人在之前被统计过多少次。
这里包括一组测试数据,第一行包含一个正整数N,接下来的N 行代表了 N个名字。N 不会超过100,000,他们的名字不会超过40位.
对于每输入的一个人名,输出一个整数,代表这个人之前被统计了多少次。
5
ACM
MAC
BBA
ACM
BAB
0
1
0
2
1
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<string>
#include<iterator>
using namespace std;
bool compare(char c1,char c2)
{
return c1 <= c2;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
map<string,int> msi;
for(int i=;i<n;++i)
{
char temp[];
scanf("%s",temp);
sort(temp,temp+strlen(temp),compare);
string str(temp);
//使用find来判断map中是否含有该key
map<string,int>::iterator it = msi.find(str);
if(it==msi.end())
{
//使用pair来判断是否插入成功
pair<map<string,int>::iterator,bool> res = msi.insert(pair<string,int>(str,));
if(res.second==true)
{
cout<<"OK"<<endl;
}
else
{
cout<<"FALSE"<<endl;
}
}
else
{
msi[str]++;
}
printf("%d\n",msi[str]);
} }
return ;
}
1.如何判断map插入成功或者失败:pair<map<string,int>::iterator,bool> res = msi.insert(pair<string,int>(key,value)); res.second的值
2.如何判断map中是否包含某key:map<string,int>::iterator it = msi.find(key); 判断it == msi.end();
3.msi[key] = value;如果key没有被insert过,会通过该式子进行insert。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string.h>
#include<map>
#include<iterator>
#include<algorithm>
using namespace std; int main()
{
int n;
while(~scanf("%d",&n),n)
{
map<string,int> msi;
for(int i=;i<n;++i)
{
char cstr[];
scanf("%s",cstr);
string str(cstr);
map<string,int>::iterator it = msi.find(str);
if(it != msi.end())
{
++msi[str];
}
else
{
msi[str] = ;
}
}
string strResult;
int maxnum = ;
map<string,int>::iterator it;
for(it = msi.begin();it != msi.end();it++)
{
if(it->second > maxnum)
{
maxnum = it -> second;
strResult = it -> first;
}
}
printf("%s\n",strResult.c_str());
}
return ;
}
1、map的insert是默认以key排序的
2、map没有sort方法。
STL之map篇的更多相关文章
- STL中map与hash_map容器的选择收藏
这篇文章来自我今天碰到的一个问题,一个朋友问我使用map和hash_map的效率问题,虽然我也了解一些,但是我不敢直接告诉朋友,因为我怕我说错了,通过我查询一些帖子,我这里做一个总结!内容分别来自al ...
- [STL] Implement "map", "set"
练习热身 Ref: STL中map的数据结构 C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Re ...
- STL之map与pair与unordered_map常用函数详解
STL之map与pair与unordered_map常用函数详解 一.map的概述 map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称 ...
- C++ STL中Map的按Key排序和按Value排序
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区 分),我们用map来进 ...
- STL中map与hash_map的比较
1. map : C++的STL中map是使用树来做查找算法; 时间复杂度:O(log2N) 2. hash_map : 使用hash表来排列配对,hash表是使用关键字来计算表位置; 时间复杂度:O ...
- STL中map,set的基本用法示例
本文主要是使用了STL中德map和set两个容器,使用了它们本身的一些功能函数(包括迭代器),介绍了它们的基本使用方式,是一个使用熟悉的过程. map的基本使用: #include "std ...
- C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET
C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...
- STL之map排序
描述 STL的map中存储了字符串以及对应出现的次数,请分别根据字符串顺序从小到大排序和出现次数从小到大排序. 部分代码已经给出,请补充完整,提交时请勿包含已经给出的代码. int main() { ...
- C++中的STL中map用法详解(转)
原文地址: https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html C++中的STL中map用法详解 Map是STL的一个关联容器,它提供 ...
随机推荐
- python - 函数的定义和使用
目录 函数的定义和使用 一. 为什么要用函数? 二. 函数的参数 三. 函数的变量 global和nolocal 四. 递归函数 五. lamabda匿名函数 函数的定义和使用 1 def test( ...
- NLTK学习笔记(六):利用机器学习进行文本分类
目录 一.监督式分类:建立在训练语料基础上的分类 特征提取器和朴素贝叶斯分类器 过拟合:当特征过多 错误分析 二.实例:文本分类和词性标注 文本分类 词性标注:"决策树"分类器 三 ...
- BZOJ 1603 USACO 2008 Oct. 打谷机
[题解] 水题.. 保存连接方式,按顺序处理即可. #include<cstdio> #include<algorithm> using namespace std; int ...
- PAT 1093. Count PAT's
The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...
- 利用fontforge制作自己的字体
最近手伤了,写代码特别慢,索性就干干一些奇奇怪怪的事情. 发现我电脑上的中文字体很是奇怪,于是便去找了中英混合的等宽字体. 满足条件的只找到了YaHei Consolas Hybrid,是微软的Con ...
- Ubuntu 17.10安装phpMyAdmin数据库管理工具
和Windows下各种双击安装直接使用的数据库管理工具不同,Linux下的数据库管理工具显得有些稍稍复杂.由于版权和收费限制,很多好用的数据库管理工具例如Data Grip和Navicat不能直接 ...
- T470 Win10下触摸板手势
T470 Win10下触摸板手势 学习了:https://forum.51nb.com/thread-1742490-1-1.html 三指横向竟然是alt+tab 学习了:http://www.xi ...
- 【iOS开发系列】NSObject方法介绍
NSObject是OC中的基类,全部类都继承于此,这里面也给我们提供了非常多与"类"和"方法"相关的方法,本文将解说几个非常有用的方法. 正文: Person. ...
- HDU 4259(Double Dealing-lcm(x1..xn)=lcm(x1,lcm(x2..xn))
Double Dealing Time Limit: 50000/20000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- jQuery - 制作点击显示二级菜单效果
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...