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;
}- 上一篇:没有了
- 下一篇:没有了
