-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的函数