STL容器系列文章:map容器

本文介绍了C++标准模板库(map)的基本概念,包括一对一的key-value映射,红黑树实现及自动排序。详细讲解了构造map对象、常用方法如插入、查找、迭代器操作、删除、交换和计数,并通过实例展示了如何使用。
摘要由CSDN通过智能技术生成

1. 头文件

#include <map>	// STL头文件无扩展头.h

2. 简介

  • 关联容器,提供一对一hash:key-mapped_value对,每个key只出现一次
  • map是以模板方式实现,可以存储任意类型数据,包括自定义数据类型
  • 其内部是一棵红黑树 RB Tree(二叉排序树),内部数据自动按key升序排列

3. 构造对象

// map有6个构造函数,比较常用的就是 template<class T1, class T2>
map<int, string> students;

4. 常用方法

  • 插入
方法说明
students.insert(pair<int, string>(1, “student_one”));pair<type1, type2>()方式
students.insert(make_pair(1, “student_one”));make_pair方式
students.insert(map<int, string>::value_type(2, “student_two”));map<type1, type2>::value_type()方式
students[3] = “student_three”;数组方式

Note:
第一和第二种方式无差异,且不能互相覆盖;
第三种方式(数组方式)可以覆盖

  • 容量
方法说明
int size = map.size();元素个数
int maxSize = map.max_size();可容纳的最大元素个数
  • 查找
方法说明
map<int, string>::iterator iter = students.find(1);不等于end()表示找到
students.count(element) == 0/1;要么0要么1
  • 迭代器
方法说明
begin()/end()正向迭代器
rbegin()/rend()逆向迭代器
  • 删除
方法说明
erase(const Key& key);如 erase(1); 删除以1为key的元素
erase(iterator);删除迭代器所指元素
erase(iterator first, iterator last);删除迭代器区间[first, last)内的元素
clear();相当于erase(map.begin(), map.end());
  • 交换
方法说明
swap(map<int, string>& anotherMap);函数原型
swap(map1, map2);方式1
map1.swap(map2);方式2
  • 排序
    map中元素自动按照key升序排列,不能用sort进行排序

  • 计数

// map可以用来对元素进行计数
// 每个元素出现了多少次,统计字符比较常用
myMap(vec[index])++;	// map<int, int>
myMap(str[index])++;	// map<char, int>

参考文章:
std::map方法实例

created by shuaixio, 2021.06.16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值