-map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果

  • map是STL的一个关联容器,它提供一对一的hash。
    第一个可以称为关键字(key),每个关键字只能在map中出现一次;
    第二个可能称为该关键字的值(value);

-map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。

  • Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。在map内部所有的数据都是有序的,后边我们会见识到有序的好处。比如一个班级中,每个学生的学号跟他的姓名就存在著一对一映射的关系
  • map的功能:自动建立key - value的对应。key 和 value可以是任意你需要的类型。

  • map的使用:
    使用map得包含map类所在的头文件
    #include < map> //注意,STL头文件没有扩展名.h

例题

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string>
#include<queue>
#include<stack>
#include<map>
#include <math.h>
#include <string.h>
#define ll long long
#define inf 0x3f3f3f3f3f
using namespace std;
map<string,int>mp;
char  ss[5000];
char sss[1000000][15];
int main()
{
    int t,a,w,kk,s,q,nn;
    scanf("%d",&t);
    //memset(ss,0,sizeof(ss));
    while(t--)
    {
        mp.clear();
        scanf("%d",&a);
        for(int i=0;i<a;i++)
        {
            scanf("%s",sss[i]);
            //mp[ss]=1;
            mp[sss[i]]++;
            //cout<<mp[sss[i]]<<endl;
        }
        for(int i=0;i<a;i++)
        {
            //cout<<mp[sss[i]]<<endl;
            if(mp[sss[i]]%2==1){
                printf("%s\n",sss[i]);
                break;
            }
        }
    }
    return 0;
}
  • ** map最基本的构造函数;**
    map<string , int >mapstring; //声明一个容器
    map<int ,string >mapint;//mapint是容器的名称,自定义;

    map<sring, char>mapstring;//声明一个容器
    map< char ,string>mapchar;

    map<char ,int>mapchar; //声明一个容器
    map<int ,char >mapint;

    map.size() 返回map中元素的个数

map<int, string>::iterator it //声明一个 迭代器***

  • ** map的基本操作函数:**
    C++ Maps是一种关联式容器,包含“关键字/值”对

    begin() 返回指向map头部的迭代器

    clear() 删除所有元素

    count() 返回指定元素出现的次数

    empty() 如果map为空则返回true

    end() 返回指向map末尾的迭代器

    erase() 删除一个元素

    find() 查找一个元素

    insert() 插入元素

    get_allocator() 返回map的配置器

    key_comp() 返回比较元素key的函数