Map
Map
一. 理论:
1. Map 的特性是,所有元素都会根据元素的键值自动被排序,map的所有元素都是pair,同时拥有实值(value)和键值(key)。Pair的第一元素被视为键值,第二元素被视为实值。Map 不允许两个元素拥有相同的键值。
2. map 的键值关系到map的元素的排列规则,任意改变map元素键值将严重破坏map的组织。所以不可以通过map 的迭代器来改变map 的键值。但是可以通过迭代器来修改元素的实值。
二.实际应用
1.使用map 时首先包括头文件: #include<map>
2.使用时应该加上宏:#pragma warning (disable:4786) 来去除警告
3.构造函数:
Map<string,int> simap;//第一个参数是键值、第二个参数是实值
Map的基本操作:
4. iterator find(键值);//它是map 的成员函数,用来找指定键值map的迭代器
5.pair<string,int> pairTemp(string(“A”),5);//pair的构造函数
6.iterator insert(iterator position, pairTemp);//将pairTemp 插入到map 中
7.void erase(iterator position);//删除指定位置上的 map 元素
8.size_type count(键值);//判断该键值的Map 元素是否存在
9.size_type size();//返回map 中的元素的个数
10.iterator lower_bound(键值); //返回该键值或者大于该键值的map 的迭代器
11.iterator upper_bound的(键值);//返回大于该键值的map 的迭代器
代码如下:
#include<iostream> #include<map> #include<algorithm> using namespace std; void show(pair <char,int> pr) { cout<<pr.first<<" "<<pr.second<<endl; } int main() { map<char,int> mp; mp["A"]=100; mp["P"]=200; mp["B"]=300; mp["D"]=400; mp["C"]=500; mp["F"]=600; for_each(mp.begin(),mp.end(),&show); cout<<"+++++++++++++++++++++++++++++++++++"<<endl; //插入 pair<char, int> prinsert; //char是键值 int是实值 cin>>prinsert.first>>prinsert.second; //注意输入格式 map<char,int>::iterator itepos=mp.find("B"); mp.insert(itepos,prinsert); for_each(mp.begin(),mp.end(),&show); cout<<"===================================="<<endl; //删除 char k; cin>>k; mp.erase(k);//删除指定位置上的 map 元素 for_each(mp.begin(),mp.end(),&show); cout<<"===================================="<<endl; cout<<mp.count("A")<<endl; cout<<mp.size()<<endl; cout<<mp.lower_bound("A")->second<<endl; cout<<mp.lower_bound("B")->second<<endl; system("pause"); return 0; }