map是一种关联容器,所谓的关联容器是指支持高效的关键字查找和访问。map中的元素为一些关键字-值(key-value)对,关键字起到索引值的作用,且map中的元素是按照关键字升序排序的。还有map是个映射,所以它的关键字和值是一一对应的。接下来就为大家介绍map的用法
我们可以用如下方法定义或初始化map
//空容器
map<int,string> m1;
//值初始化map
map<string,string> m2 = {{"001","shreck"},
{"002","leo"}
};
我们可以用如下方法为map添加元素
map<string,string> m;
//方法一
m.insert(pair<string,string>("001",""shreck));
//方法二
m.insert(map<string,string>::value_type("002",""leo));
//方法三
m[2] = "lewin";
我们使用find函数来查找map中的元素,若查找失败则返回尾部迭代器
find函数具体用法实例如下
#include<iostream>
#include<map>
using namespace std;
int main(int argc,char **argv)
{
map<int,string> m;
m[0] = "shreck";
m[1] = "leo";
//使用find函数查找leo
auto it = m.find(1);
if(it == m.end())
{
cout<<"未找到该元素"<<endl;
}
else
{
cout<<"该元素为:"<<it->second<<endl;
}
return 0;
}
map的删除方法有三种
(1)传递给erase一个迭代器
(2)传递给erase一个迭代器对
(3)传递给erase一个key_value
map的删除方法如下实例
#include<iostream>
#include<map>
using namespace std;
//遍历函数
void print(const map<int,string> &m)
{
for(auto x:m)
{
cout<<x.second<<" ";
}
cout<<endl;
}
int main(int argc,char **argv)
{
map<int,string> m;
m[0] = "shreck";
m[1] = "leo";
m[2] = "lewin";
m[3] = "lyh";
m[4] = "lz";
//传一个迭代器
auto it1 = m.find(2);
m.erase(it1);
print(m);
//传一对迭代器
auto it2 = m.find(1);
auto it3 = m.find(4);
m.erase(it2,it3);
print(m);
//传一个key_value
m.erase(0);
print(m);
return 0;
}
函数 | 作用 |
---|---|
begin() | 返回map的头部迭代器 |
end() | 返回指向map末尾的尾部迭代器 |
clear() | 删除容器中所有元素 |
empty() | 判断map是否为空 |
erase() | 删除map中的元素 |
find() | 查找一个元素 |
insert() | 插入一个元素 |
size() | 返回map中的元素个数 |
max_size() | 返回map可容纳的最大元素个数 |
lower_bound() | 指向第一个关键字不小于K的元素 |
upper_bound() | 指向第一个关键字大于k的元素 |