算法竞赛STL:map的使用方法

算法竞赛STL:map的使用方法

map

容器描述map是一种关联容器,它存储的元素是键值对,键和值可以是任意类型。map内部的元素按照键的顺序进行排序,排序的规则由比较函数决定。

使用方法 : 首先,你需要包含头文件#include <map>,然后声明一个map对象,如std::map<int, std::string> m;。这将创建一个键为整数、值为字符串的map

底层实现map的底层通常实现为红黑树。红黑树是一种自平衡的二叉查找树,它可以在对数时间内完成查找、插入和删除操作。

支持操作

操作名 效果 传入参数 操作返回值
insert(const pair<const Key, T>& value) 插入一个键值对 value: 要插入的键值对 返回一个pair,第一个元素是指向新插入元素的迭代器,第二个元素是一个bool值,如果插入成功,返回true;否则,返回false
erase(iterator pos) 删除指定位置的元素 pos: 要删除元素的位置 返回被删除元素之后元素的迭代器
erase(const Key& key) 删除键为给定值的元素 key: 要删除的元素的键 返回被删除的元素的数量
clear() 删除所有元素
find(const Key& key) 查找键为给定值的元素 key: 要查找的元素的键 如果找到,返回指向该元素的迭代器;否则,返回end()
count(const Key& key) 返回键为给定值的元素的数量 key: 要查找的元素的键 返回元素的数量,对于map来说,返回值只能是0或1
empty() 检查map是否为空 如果map为空,返回true;否则,返回false
size() 返回map中的元素数量 返回元素数量
operator[] 访问或插入指定键的元素 key: 元素的键 返回指定键的元素的引用

常用示例

cpp 复制代码
#include <map>
#include <iostream>

int main() {
    std::map<int, std::string> m;
    m[1] = "one";
    m[2] = "two";
    for (auto it = m.begin(); it != m.end(); ++it) {
        std::cout << it->first << " => " << it->second << std::endl;
    }
    return 0;
}

经常产生的问题

  1. map的插入操作可能会改变map中其他元素的迭代器,因此在遍历map的同时插入元素是不安全的。
  2. mapoperator[]操作如果找不到指定的键,会插入一个具有该键和默认值的元素。
相关推荐
Doro再努力18 小时前
2025_11_14洛谷【入门1】数据结构刷题小结
前端·数据结构·算法
yolo_guo18 小时前
opencv 学习: QA_01 什么是图像锐化
linux·c++·opencv·计算机视觉
蒙奇D索大18 小时前
【算法】回溯算法精讲:从深度优先搜索到剪枝优化
经验分享·笔记·算法·深度优先·剪枝·改行学it
QTreeY12318 小时前
yolov5/8/9/10/11/12/13+deep-oc-sort算法的目标跟踪实现
人工智能·算法·yolo·目标检测·计算机视觉·目标跟踪
_OP_CHEN18 小时前
算法基础篇:(六)基础算法之双指针 —— 从暴力到高效的优化艺术
c++·算法·acm·优化算法·双指针·oj题·算法蓝桥杯
cs麦子18 小时前
C语言--详解--指针--下
c语言·数据结构·算法
aitoolhub18 小时前
考研论文引用格式 AI 校验实操:工具合集 + 技术原理
c语言·人工智能·考研·aigc
flashlight_hi18 小时前
LeetCode 分类刷题:3217. 从链表中移除在数组中存在的节点
javascript·数据结构·leetcode·链表
todoitbo19 小时前
Rust新手第一课:Mac环境搭建踩坑记录
开发语言·macos·rust
Tisfy19 小时前
LeetCode 2536.子矩阵元素加 1:二维差分数组
算法·leetcode·矩阵