map内部是使用红黑树实现的(set也是),在建立映射的过程中会自动实现从小到大的排序功能
#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
int main(){
map<char,int> mp;
mp['c']=10;
mp['c']=9;//20被覆盖
mp['m']=20;
mp['r']=30;
mp['a']=40;
mp['b']=70;
mp['d']=60;
mp['e']=50;
//通过下标访问 mp中的键是唯一的
printf("mp['c']:%d\n",mp['c']);
//通过迭代器访问
//it->first访问键,it->second访问值
printf("原始数据:\n");
for(map<char,int>::iterator it=mp.begin();it !=mp.end(); it++){
printf("%c %d\n",it->first,it->second);
}//map会以键从小到大的顺序自动排序
//如果是字符串到整型的映射,必须使用string而不能用char数组
//map<string,int> mp;
//find(key)返回键为key的映射的迭代器
map<char,int>::iterator it=mp.find('m');
printf("mp.find('m'):%c %d\n",it->first,it->second);
//erase 单个 区间
mp.erase('a');
printf("erase('a')后的数据:\n");
for(map<char,int>::iterator it=mp.begin();it !=mp.end(); it++){
printf("%c %d\n",it->first,it->second);
}
mp.erase(it,mp.end());
printf("erase(it,mp.end())(m)后的数据:\n");
for(map<char,int>::iterator it=mp.begin();it !=mp.end(); it++){
printf("%c %d\n",it->first,it->second);
}
printf("map中的映射对数%d\n",mp.size());//map中的映射个数
mp.clear();
printf("clear的映射对数%d\n",mp.size());
return 0;
}