本文最后更新于 2025-03-07T10:50:09+08:00
本文主要写法参考C++ STL函数库
map简介
map是STL(中文标准模板库)的一个关联容器。
- 可以将任何基本类型映射到任何基本类型。如int array[100]事实上就是定义了一个int型到int型的映射。
- map提供一对一的数据处理,key-value键值对,其类型可以自己定义,第一个称为关键字,第二个为关键字的值
- map内部是自动排序的
map的用法
必须引入包
map的定义
map<type1name, type2name> maps;//第一个是键的类型,第二个是值的类型
map容器内元素的访问
通过下标进行访问
maps[‘c’] = 5;
通过迭代器进行访问
map可以使用it -> first来访问键,使用it -> second访问值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include <map> #include <iostream> using namespace std; int main() { map<char,int> maps; maps['a'] = 10; maps['b'] = 20; maps['c'] = 30; for(map<char,int>::iterator it=mp.begin(); it!=mp.end(); it++) { cout<<it -> first<<" "<<it -> second<<endl; } return 0; }
|
map的常用用法
1 2 3 4 5 6 7 8 9 10 11 12
| map<int, string> m;
m.insert(pair<int, string>(11, "kk"));
m.insert(map<int, string>::value_type(22, "pp"));
m[12] = "dd"; m[34] = "ff";
|
- maps.find() 查找一个元素
- maps.clear() 清空
- maps.erase() 删除一个元素
- maps.size() 长度
- maps.begin() 返回指向map头部的迭代器
- maps.end() 返回指向map末尾的迭代器
- maps.rbegin()返回指向map尾部的逆向迭代器
- maps.rend() 返回指向map头部的逆向迭代器
- maps.empty()判断其是否为空
- maps.swap()交换两个map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| map<string, int>::iterator it;
it=maps.find("123");
it = maps.find("123"); maps.erase(it);
int n = maps.erase("123");
maps.erase(maps.begin(), maps.end());
int len = maps.size();获取到map中映射的次数
map<string, int>::iterator it; for(it = maps.begin(); it != maps.end(); it++) cout<< it-> first<<" "<<itr -> second<<endl;
map<string,int>::reverse_iterator it; for(it = maps.rbegin(); it != maps.rend(); it++) cout<<it -> first<<' '<<it -> second<<endl;
|