卡码网语言基础课 | 18.开房门

哈希表的常用数据结构——map映射,映射就是将一个元素(key)和一个对应值(value)关联起来。

同样的,map映射也提供map、multimap、unordered_map三种结构。

映射底层实现是否有序数值是否可以重复
std::map红黑树key有序key不可重复
std::multimap红黑树key有序key可重复
std::unordered_map哈希表key无序key不可重复

unordered_map查找速度更快,使用场景:不需要排序只需要快速查找键对应的值

map、multimap的key值存储是有序的,使用场景:需要对键值对进行自定义排序

1.引入头文件

// 引入unordered_map头文件,包含unordered_map类型
#include <unordered_map>
// 引入map头文件,包含map类型和multimap类型
#include <map>

2.map的声明

// 声明一个整数类型映射到整数类型的 无序映射
unordered_map<int, int> uMap;
// 声明一个将字符串映射到整数的`map`,可以这样声明:
map<string, int> myMap;

3.插入键值对:insert()或者[ ]操作符

uMap[10] = 0;

myMap["english"] = 80;

4.查找值:find()

if (myMap.find("math") != myMap.end()) {
    // 键存在
} else {
    // 键不存在
}

5.遍历键值对:for循环

for(const pair<int,int>& kv:umap) {
  
}

const用于声明一个不可修改的变量,在这里表示只能读取容器中的值,但不能修改。

pair<int, int>定义了kv也就是键值对的数据类型是pair。在使用时通过first 和 second 成员来访问 pair 中的第一个和第二个元素, 它的 first 成员存储键,而 second 成员存储值。

&:表示kv是一个引用,而不是值的拷贝。

6.范围for循环:遍历容器中的元素

for (类型 变量名 : 容器) {
    // 在这里使用一个变量名,表示容器中的每个元素
}

范围for循环不会修改容器中的元素,它只用于读取元素。

 使用auto关键字来让编译器自动推断元素的类型:

// 使用auto关键字自动推断元素的类型
for (auto num : numbers) {
    std::cout << num << " ";
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值