map 用法详解

来源:互联网 发布:qq影音mac官方下载 编辑:程序博客网 时间:2024/06/07 02:38

和vector一样,map也可以看作一种特殊的数组,vector是不限定长度的数组,map是可以不开中间位置元素空间的数组。

map常见的函数:

m.insert(pair)  //插入一对数据m.size()        //返回容器中元素的个数m.count(key)    //返回key键是否出现过m.find(key)     //寻找key键元素,返回到迭代器m.erase(pos)    //删除迭代器指向位置的元素m.empty()       //判断是否为空m.clear()       //清空容器

新建容器对象:
新建一个容器对象和迭代器:
map <类型1,类型2> 容器名称;
map <类型1,类型2> ::iterator 迭代器名称;

map元素有两个部分,前面的叫做键,后面的叫做值。
以键值对< a , b >为例:
添加元素的三种方式:
m.insert(pair<int,int>(a,b));
m.insert(map<int,int>::value_type(a,b));
m[a]=b;

和vector一样,访问元素尽量使用迭代器:
可以用for循环遍历容器,或者用find函数查找相应键的值:
it=find(a); 迭代器指向键a所对应的元素
it->first 指向迭代器所指向元素的键
it->second 指向迭代器所指向元素的值
也可以用最值接的方法:
m[a];来求出键a对应的值

下面来个样例:

#include"stdio.h"#include"iostream"#include"map"using namespace std;int main(){//初始化    map <int,int> mp;    map <int,int> ::iterator it;//三种插入方式    mp.insert(pair<int,int>(3,8));    mp.insert(pair<int,int>(11,21));    mp.insert(pair<int,int>(12,22));    mp.insert(pair<int,int>(13,23));    mp.insert(pair<int,int>(14,24));    mp.insert(pair<int,int>(15,25));    mp.insert(map<int,int>::value_type(4,9));    mp[5]=10;//判断键位5是否出现过    printf("%d\n",mp.count(5));    printf("容器的元素分别为:\n");//遍历取值方式    for(it=mp.begin(); it!=mp.end(); it++)    {        printf("%d %d\n",it->first,it->second);    }//通过函数查值    printf("寻找下标为3的元素:");    int f=3;    it=mp.find(f);    //找不到迭代器会返回end指针    if(it==mp.end())    printf("NO\n");    else printf("%d %d\n",it->first,it->second);//直接用下标查值    printf("直接下标查找的结果:");    printf("%d\n",mp[3]);//删除区间值    int minn=5;    int maxn=13;    printf("删除键为%d到%d的所有元素\n\n",minn,maxn);    map <int,int> ::iterator itfrom=mp.lower_bound(minn);    map <int,int> ::iterator itto=mp.upper_bound(maxn);    if(itfrom!=mp.end())        printf("第一个被删的是:\n%d %d\n",itfrom->first,itfrom->second);    if(itto!=mp.end())        printf("最后一个被删的后一个数是:\n%d %d\n",itto->first,itto->second);    mp.erase(itfrom,itto);    printf("删除后的容器:\n");    for(it=mp.begin(); it!=mp.end(); it++)    {        printf("%d %d\n",it->first,it->second);    }}

这里写图片描述

0 0
原创粉丝点击