C++ STL 映射map

本文详细讲解了C++ STL映射容器map的原理和使用方法,包括其红黑树数据结构、键值一对映射关系、元素插入、遍历、删除及搜索操作。通过实例展示了如何定义、插入、遍历和删除map中的元素,以及如何进行反向搜索和键值查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要简单介绍映射(map)的原理和用法,便于学习和查阅。

映射的原理

map 映照容器的元素数据是由一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系。
map 映照容器的数据结构也是采用红黑树来实现的,插入元素的键值不允许重复,比较函数只对元素的键值进行比较,元素的各项数据可通过键值检索出来。由于map 与set采用的都是红黑树的数据结构,所以,用法基本相似。图是map 映照容器元素的数据构成示意图。
这里写图片描述

映射使用

  • 头文件
#include<map>
  • 定义

创建map对象时,键值与映照数据的类型由自己定义。

map<Data_Type1, Data_Type2> name;

例如:

map<string, float> m; 
  • 插入

插入元素在没有指定比较函数时,元素插入的位置按键值从小到大排入红黑树中。

m[Data_Type1] = Data_Type2;

例如:

m["Jack"] = 98.5;
m["Bomi"] = 96.0;
m["Kate"] = 97.5;
  • 遍历
map<string, float>::iterator it;  // 定义迭代器
for (it = m.begin(); it != m.end(); it++)
	cout << (*it).first << " " << (*it).second << endl;

定义一个迭代器,并用begin()end() 分别表示起始位置和终止位置,用firstsecond 分别表示键值和映射的值。

  • 元素删除

erase()方法删除元素, 可以删除某个迭代器位置上的元素,等于某个键值的元素,一个迭代器区间上所有的元素,当然也可以用clear() 方法来清空。

例如:

m.erase(96.0);
  • 元素的反向搜索

使用反向迭代器reverse_iterator 反向遍历容器中的数据,它需要用rbegin()rend() 分别表示反向遍历的起始位置和终止位置。

map<string, float>::reverse_iterator rit;
for (rit = m.rbegin(); rit != rend(); it++)
  • 搜索

使用find() 方法来搜索键值。如果搜索到了,则返回该键值所在的迭代器的位置;否则返回 end() 迭代器位置。

it = m.find("Kate");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值