Map

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aaa_cainiao_66666/article/details/79747105

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;

}


博主设置当前文章不允许评论。

没有更多推荐了,返回首页