//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映照容器的更多相关文章

  1. C++ map 映照容器

    map映照容器的元素数据是一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系. map映照容器的数据结构是采用红黑树来实现的,插入键值的元素不允许重复,比较函数只对元素的键值进行比较, ...

  2. map映照容器的使用

    map映照容器可以实现各种不同类型数据的对应关系,有着类似学号表的功能. 今天在做并查集的训练时,就用上了map映照容器. 题目就不上了,直接讲一下用法.顺便说一下,实现过程是在C++的条件下. #i ...

  3. 统计频率(map映照容器的使用)

    问题描述  AOA非常喜欢阅读莎士比亚的诗,莎士比亚的诗中有种无形的魅力吸引着他!他认为莎士比亚的诗中之所以些的如此传神,应该是他的构词非常好!所以AOA想知道,在莎士比亚的书中,每个单词出现的频率各 ...

  4. POJ 1002 487-3279(map映照容器的使用)

    Description Businesses like to have memorable telephone numbers. One way to make a telephone number ...

  5. zoj 2104 Let the Balloon Rise(map映照容器的应用)

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2104 题目描述: Contest time again! Ho ...

  6. zoj 1109 Language of FatMouse(map映照容器的典型应用)

    题目连接: acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1109 题目描述: We all know that FatMouse doe ...

  7. map映照容器(常用的使用方法总结)

    map映照容器的数据元素是由一个键值和一个映照数据组成的,键值和映照数据之间具有一一对应的关系.map与set集合容器一样,不允许插入的元素的键值重复. /*关于C++STL中map映照容器的学习,看 ...

  8. C++STL之map映照容器

    map映照容器 map映照容器的元素数据是由一个键值和一个映照数据组成的, 键值与映照数据之间具有一一映照关系. map映照容器的数据结构也是采用红黑树来实现的, 插入元素的键值不允许重复, 比较函数 ...

  9. multimap多重映照容器(常用的方法总结)

    multimap和map的不同之处在于前者允许重复键值的元素出现. /*关于C++STL中mulitmap的学习,与map不同的是,multimap允许插入重复键值的元素*/ #include < ...

随机推荐

  1. ES6学习之let

    块级作用域 ; i < ; i++){} console.log(i); ; j < ; j++){} console.log(j); //"ReferenceError: j ...

  2. Windows NT 的历史

    Windows NT 的版本历史 https://blog.csdn.net/flyingpig2016/article/details/53282895/ 按照自己找到的资料:windows NT ...

  3. Vagrant系列(二)----Vagrant的配置文件Vagrantfile详解

    一.简介 在我们的工作目录下有一个Vagrantfile文件,里面包含有大量的配置信息,通过它可以定义虚拟机的各种配置,如网络.内存.主机名等,主要包括三个方面的配置,虚拟机的配置.SSH配置.Vag ...

  4. Java8 Hash改进/内存改进

    又开新坑o(*≧▽≦)ツ讲讲几个Java版本的特性,先开始Java8, HashMap的改进 HashMap采用哈希算法,先使用hashCode()判断哈希值是否相同,如果相同,再使用equals() ...

  5. Hbase获取流程

    1\\.客户端chou操作 2.服务器dauncaozuo操作 3\存储优化

  6. 移动端Web界面滚动touch事件

    解决办法一: elem.addEventListener( 'touchstart', fn, { passive: false } ); 解决办法二: * { touch-action: pan-y ...

  7. 爬虫实战——Scrapy爬取伯乐在线所有文章

    Scrapy简单介绍及爬取伯乐在线所有文章 一.简说安装相关环境及依赖包 1.安装Python(2或3都行,我这里用的是3) 2.虚拟环境搭建: 依赖包:virtualenv,virtualenvwr ...

  8. WPF如何实现TreeView节点重命名

    我们经常看到一些软件比如酷狗音乐,在对列表右键进行重命名的时候,当前列表会泛白并且进入可编辑状态,当我们更改完成后就会并进入非编辑状态,这些具体是怎么实现的呢?下面的方法也许会提供一些思路,下面的Tr ...

  9. APP test

    在讲APP测试之前,先讲一下,目前APP的操作系统以及APP相关基础知识. 一.APP基础知识 1.操作系统# 现在移动端的操作系统主流的分为两种:(1)安卓系统 (2)IOS系统. 2.安卓系统# ...

  10. vscode git設置

    1.git官网https://git-scm.com/download/win 链接下载:64-bit Git for Windows Setup,不要下载Portable,体积太大了: 如果git官 ...