网站首页 > 精选教程 正文
介绍
map是STL的一个关联容器,它提供一对一的hash。
· 第一个可以称为关键字(key),每个关键字只能在map中出现一次;
· 第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这棵树具有对数据自动排序的功能。在map内部所有的数据都是有序的,如下图:
常用函数
begin() 返回指向map头部的迭代器clear() 删除所有元素count() 返回指定元素出现的次数
empty() 如果map为空则返回trueend() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素find() 查找一个元素insert()插入元素max_size()返回可以容纳的最大元素个数 size() 返回map中元素的个数 swap() 交换两个map
get_allocator() 返回map的配置器 key_comp() 返回比较元素key的函数 lower_bound() 返回键值>=给定元素的第一个位置 max_size() 返回可以容纳的最大元素个数 rbegin() 返回一个指向map尾部的逆向迭代器 rend() 返回一个指向map头部的逆向迭代器 upper_bound() 返回键值>给定元素的第一个位置 value_comp() 返回比较元素value的函数
函数实例
插入元素,并判断是否插入成功
#include <map>
#include <iostream>
using namespace std;
int main()
{
map<int, string> myMap;
// 第一种 用insert函數插入pair
myMap.insert(pair<int,string>(01, "aa"));
// 第二种 用insert函数插入value_type数据
myMap.insert(map<int, string>::value_type(02, "bb"));
// 第三种 用"array"方式插入
myMap[33] = "cc";
// 构造定义,返回一个pair对象,验证是否添加成功
pair<map<int, string>::iterator, bool> Insert_Pair;
Insert_Pair = myMap.insert(map<int, string>::value_type(33, "cc"));
if (!Insert_Pair.second)
cout << "Error insert new element" << endl;
cout << "\n";
return 0;
}
遍历map
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
for (int i = 0; i < 5; i++) {
m[i] = i * i;
}
//第一种遍历方式,迭代器+while
map<int, int>::iterator iter;
iter = m.begin();
while (iter != m.end()) {
cout << iter->first << "-" << iter->second << endl;
iter++;
}
//第二种遍历方式,for+迭代器
for (iter = m.begin(); iter != m.end(); iter++) {
cout << iter->first << "-" << iter->second << endl;
}
//第三种遍历方式,for+auto
for (auto &it : m) {
cout << it.first << "-" << it.second << endl;
}
return 0;
}
查找元素
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
for (int i = 0; i < 5; i++) {
m[i] = i * i;
}
auto it = m.find(3);
if (it != m.end())
{
int ss = (*it).second;//或者int ss=it->second
cout << ss << endl;
}
return 0;
}
删除元素
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
for (int i = 0; i < 5; i++) {
m[i] = i * i;
}
//删除键为bfff指向的元素
m.erase(4);
//删除迭代器 key所指向的元素
map<int, int>::iterator key = m.find(2);
if (key != m.end())
{
m.erase(key);
}
//删除所有元素
m.erase(m.begin(), m.end());
return 0;
}
统计key的出现的次数
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int, int> m;
for (int i = 0; i < 5; i++) {
m[i] = i * i;
}
int c = m.count(1);
cout << c << endl;
return 0;
}
- 上一篇: Python中很常用的函数map(),一起来看看用法
- 下一篇: Go 语言 map 如何顺序读取?
猜你喜欢
- 2024-12-24 Go 语言中的映射(Map)详解:键值对实际是如何存储的
- 2024-12-24 HashMap如何计算大小和遍历?
- 2024-12-24 go map实现原理
- 2024-12-24 一文读懂map和hash_map的差异原理
- 2024-12-24 前端问答:Map 和 Object 有啥不同?
- 2024-12-24 Java、Set、Map集合框架知识大全,收藏备用
- 2024-12-24 Go 语言 map 如何顺序读取?
- 2024-12-24 Python中很常用的函数map(),一起来看看用法
- 2024-12-24 golang常用数据结构之map详细讲解
- 2024-12-24 JS遍历(循环)——JS对象&JS数组
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)