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 < ...
随机推荐
- 百度地图api在Html中显示,在jsp页面中不显示解决方法
在jsp页面中显示如下 但是在html中正常显示. 原来的代码如下: <script type="text/javascript" src="http://api. ...
- babel (三) babel polly-fill
Babel includes a polyfill that includes a custom regenerator runtime and core-js. This will emulate ...
- react组件选项卡demo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mysql sql执行计划
查看Mysql执行计划 使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show pro ...
- com.alibaba的fastjson简介
fastjson简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSO ...
- 在使用IWMS的时候,IWMS自带函数样式无法满足我们需求。以下一段JS是实现左图右字的适用于IWMS的代码。
<div class="wz-list">里边需要有html做好的Html代码样式</div> <script> var attrnew = & ...
- Graphics
Image img = Image.FromFile("g1.jpg");//建立Image对象Graphics g = Graphics.FromImage(img);//创建G ...
- c#处理json数据最好的方式,没有之一。
c#处理json数据最好的方式,没有之一. 引用Json.Net(需要.NET 4.5及以上版本) using Newtonsoft.Json.Linq; 使用非常简单 JObject result ...
- faster rcnn训练自己的数据集
采用Pascal VOC数据集的组织结构,来构建自己的数据集,这种方法是faster rcnn最便捷的训练方式
- git 解决二进制文件冲突
1.冲突的产生 当我们向远程git服务器提交某一个文件的修改时,恰巧这个文件相同的修改地方其他人也有修改,并且已经提交到服务器,这时冲突就产生了. 通常,当我们合并两个相同的地方都有修改的分支时,都会 ...