一 . map
特点:
map是可将每一个元素分为key和value两部分,自带排序功能的容器(按照key大小排序),并且key具有唯一性,即一个key值在一个map容器内只能出现一次,若下次输入相同的key值,则无法插入元素进入容器内(可以用数组进行覆盖)
1.定义
//int,char,string 都可以为容器key,value的数据类型
map<int ,int >mp;
map<string,int>mp;
map<char,int>mp;
2.元素的插入
mp.insert(make_pair(key,value));
//通过make_pair()存储mp的key,value值
eg:
int i=1,j=2;
map<int,int>mp;
mp.insert(make_pair(i,j));
//将{1,2}插入mp容器中
mp[key]=value
eg:
for(int i=0;i<=n;i++)
{
cin>>t;
mp[i]=t;
}
//用数组的方法进行赋值
通过如下例子可以更好的了解insert与数组的插入不同
(1)key值相同时insert记录第一次出现的value值
(2)而数组会进行实时更新value值
//insert插入
#include <iostream>
#include<algorithm>
#include<map>
using namespace std;
map<int ,int>mp;
int main() {
int n;
cin>>n;
for(int i=0;i<=n;i++)
{
mp.insert(make_pair(n,i));
}
for(auto j=mp.begin();j!=mp.end();j++)
{
cout<<j->second;
}
return 0;
}
//数组覆盖
#include <iostream>
#include<algorithm>
#include<map>
using namespace std;
map<int ,int>mp;
int main() {
int n;
cin>>n;
for(int i=0;i<=n;i++)
{
mp[n]=i;
}
for(auto j=mp.begin();j!=mp.end();j++)
{
cout<<j->second;
}
return 0;
}
3.查找元素
map<int,int>mp;
// find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器(mp.end())。
iter = mp.find("123");
if(iter != mp.end())
cout<<"Find, the value is"<<iter->second<<endl;
else
cout<<"Do not Find"<<endl;
4.删除元素
//(1)clear();
map<int,int>mp;
mp.clear();
//删除mp内所有元素
//(2)erase
map<int,int>mp;
mp.erase(x);
//删除mp中值x的元素