map映照容器
//map映照容器是由一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系
//map映照容器的键值不允许重复 ,比较函数值对元素
//的键值进行比较,元素的各项数据可通过键值检索出来 #include<iostream>
#include<map>
#pragma warning(disable:4786) //强制编译器忽略标记符超长警告
#include<string>
using namespace std;
int main()
{
//定义map对象,当前没有任何元素
map<string,float> m1;
//插入元素,按键值的由小到大放入黑白数中
m1["Jack"]=98.5;
m1["Bomi"]=96.0;
m1["Kate"]=97.5;
//前向遍历元素
map<string,float>::iterator it;
for(it=m1.begin();it!=m1.end();it++)
{
//输出键值与映照数据
cout<<(*it).first<<":"<<(*it).second<<endl;
}
map<int,char> m2;
//插入元素,按键值的由小到大放入黑白树中
m2[]='m';
m2[]='k';
m2[]='x';
m2[]='a';
//删除键值为28的元素
m2.erase();
//前向遍历元素
for(map<int,char>::iterator it=m2.begin();it!=m2.end();it++)
{
//输出键值与映照数据
cout<<(*it).first<<":"<<(*it).second<<endl;
}
//可以使用反向迭代器reverse_iterator反向遍历map映照容器中的数据,需要rbegin()方法和rend()方法指出反向遍历的起始位置和终止位置
for(map<int,char>::reverse_iterator rit=m2.rbegin();rit!=m2.rend();rit++)
{
cout<<(*rit).first<<":"<<(*rit).second<<endl;
}
map<int,char>::iterator fit;
//使用find()方法来搜索某个键值,如果搜到了,返回其迭代器位置,否则,返回end()迭代器位置
fit=m2.find();
if(fit!=m2.end()) //搜索到该值
{
cout<<(*fit).first<<":"<<(*fit).second<<endl;
}
else
{
cout<<"not found it"<<endl;
}
//自定义比较函数myComp
/*struct myComp
{
bool operator()(const int &a,const int &b)
{
if(a!=b) return a>b;
else
return a>b;
}
};
map<int,char,myComp> m3;
//插入元素,按键值的由大到小放入黑白树中
m3[25]='m';
m3[28]='k';
m3[10]='x';
m3[30]='a';
//使用前向迭代器中序遍历map
for(map<int,char,myComp>::iterator it1=m3.begin();it1!=m3.end();it1++);
{
cout<<(*it1).first<<":"<<(*it1).second<<endl;
} */
//元素是结构体,可以直接把比较函数写在结构体内
/*struct Info
{
string name;
float score;
//重载"<"操作符,按score由大到小
bool operator<(const Info &a) const
{
return a.score<score;
}
};
map<Info,int> m4;
//定义结构体变量
Info info;
info.name="Jack";
info.score=60;
m[info]=25;
info.name="Bomi";
info.score=80;
m[info]=10;
info.name="Peti";
info.score=66.5;
m[info]=30;
map<Info,int>::iterator it2;
for(it2=m4.begin();it2!=m4.end();it2++)
{
cout<<(*it2).second<<":";
cout<<((*it2).first).name<<((*it2).first.score<<endl;
}*/
//用map实现数字分离采用取余方法操作耗时,把数字当字符串使用 map映照功能很方便实现了数字分离
map<char,int> m5;
m5['']=;
m5['']=;
m5['']=;
m5['']=;
m5['']=;
m5['']=;
m5['']=;
m5['']=;
m5['']=;
m5['']=;
/*上面的10条赋值语句也可采用下面这个循环来简化代码编写
for(int j=0;j<10;j++)
{
m['0'+j]=j;
}*/
string sa,sb;
sa="";
int i;
int sum=;
for(i=;i<sa.length();i++)
{
sum+=m5[sa[i]];
}
cout<<"sum="<<sum<<endl;
//数字映照字符的map写法
map<int,char> m6;
for(int j=;j<;j++)
{
m6[j]=''+j;
}
int n=;
string s="The number is ";
cout<<s+m6[n]<<endl;
return ;
}
map映照容器的更多相关文章
- C++ map 映照容器
map映照容器的元素数据是一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系. map映照容器的数据结构是采用红黑树来实现的,插入键值的元素不允许重复,比较函数只对元素的键值进行比较, ...
- map映照容器的使用
map映照容器可以实现各种不同类型数据的对应关系,有着类似学号表的功能. 今天在做并查集的训练时,就用上了map映照容器. 题目就不上了,直接讲一下用法.顺便说一下,实现过程是在C++的条件下. #i ...
- 统计频率(map映照容器的使用)
问题描述 AOA非常喜欢阅读莎士比亚的诗,莎士比亚的诗中有种无形的魅力吸引着他!他认为莎士比亚的诗中之所以些的如此传神,应该是他的构词非常好!所以AOA想知道,在莎士比亚的书中,每个单词出现的频率各 ...
- POJ 1002 487-3279(map映照容器的使用)
Description Businesses like to have memorable telephone numbers. One way to make a telephone number ...
- zoj 2104 Let the Balloon Rise(map映照容器的应用)
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2104 题目描述: Contest time again! Ho ...
- zoj 1109 Language of FatMouse(map映照容器的典型应用)
题目连接: acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1109 题目描述: We all know that FatMouse doe ...
- map映照容器(常用的使用方法总结)
map映照容器的数据元素是由一个键值和一个映照数据组成的,键值和映照数据之间具有一一对应的关系.map与set集合容器一样,不允许插入的元素的键值重复. /*关于C++STL中map映照容器的学习,看 ...
- C++STL之map映照容器
map映照容器 map映照容器的元素数据是由一个键值和一个映照数据组成的, 键值与映照数据之间具有一一映照关系. map映照容器的数据结构也是采用红黑树来实现的, 插入元素的键值不允许重复, 比较函数 ...
- multimap多重映照容器(常用的方法总结)
multimap和map的不同之处在于前者允许重复键值的元素出现. /*关于C++STL中mulitmap的学习,与map不同的是,multimap允许插入重复键值的元素*/ #include < ...
随机推荐
- Windows环境下在IDEA编辑器中spark开发安装步骤
以下是windows环境下安装spark的过程: 1.安装JDK(version:1.8.0.152) 2.安装scala(version:2.11/2.12) 3.安装spark(version:s ...
- 开机自动获取spark用户名和服务器
import os.path import getpass import platform import time username = getpass.getuser() #获取当前用户名 home ...
- 常见IT工具软件总结
1. 阿里云在线迁移服务 2.智能媒体管理 格式转换 业务域名管理 1. 每个业务有一个英文单词, 1. 每个 git 的命名应该是 chgg-业务英文-种类 2. 例如 chgg-plant-api ...
- nginx worker_processes 配置
搜索到原作者的话:As a general rule you need the only worker with large number ofworker_connections, say 10,0 ...
- Python——列表操作
一.列表中所有元素出现的次数,并输出为字典模式 def count_list(list): b_list = {} for i in set(list): b_list[i] = list.count ...
- Jenkins+PowerShell持续集成环境搭建(六)参数化构建
参数化构建可以应用于动态绑定源码地址等情况. 勾选“This build is parameterized”: 如果需要动态绑定源码地址,参考: 配置完成后构建项目变成:
- Pulse-per-second (PPS) Signal Interfacing
Some radio clocks and related timekeeping gear have a pulse-per-second (PPS) signal that can be used ...
- 灰度图Matlab
[转载]matlab中pcolor绘图“少画一行”的问题 本文是关于matlab pcolor函数(slice,surf函数的情况与这个类似)绘图的问题的一些解决方案,在此记录备用 经 常处理三维(或 ...
- NetScope脱机(localhost)使用[转】
https://blog.csdn.net/jiwu999/article/details/79626773 方法: step1:git clone https://github.com/ethere ...
- Qt5 入门
main()函数中第一句是创建一个QApplication类的实例. 对于 Qt 程序来说,main()函数一般以创建 application 对象(GUI 程序是QApplication,非 GUI ...