C++ map
map的特殊之处
会自动对key进行排序,可以在某些大数据的情况下代替sort。
正是如此不能对 map 使用 sort
可以让一个任意类型的数据作为key值映射到另一类型的数据。
map 的 swap 是直接交换两个容器,如 m1.swap(m2);
导入头文件
#include<map>
数据的插入和输出
map<string,int> A;
string a;
int b;
cin >> a >> b;
A.insert(pair<string,int>(a,b));
A.insert(map<string,int>::value_type(a,b)); //map中不会存在重复的元素
cin >> a >>b;
A[a] = b; //最简单的赋值方式
//反向迭代器
for(map<string,int>::reverse_iterator i = A.rbegin();i != A.rend();i ++) cout << i->first << " : " << i->second <<endl;
//正向迭代器
for(map<string,int>::iterator i = A.begin();i != A.end();i ++) cout <<i->first << " : " << i-> second << endl;
数据的查找
find 函数若在map中查找不到该 key 值则返回 end 值
map<string,int>::iterator here,here_too;
here = A.find("abs");
here_too = A.find("1");
if(here != A.end()) cout << here -> first << " : " << here -> second << endl;
if(here_too != A.end()) cout << here_too -> first << " : " << here_too -> second << endl;
数据的删除
map<string, int>::iterator here = A.find("abs"); //查找地址
if(here != A.end()) A.erase(here); //使用 erase 删除
其他命令
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数