算法竞赛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[]操作如果找不到指定的键,会插入一个具有该键和默认值的元素。
相关推荐
智驱力人工智能20 分钟前
基于视觉分析的人脸联动使用手机检测系统 智能安全管理新突破 人脸与手机行为联动检测 多模态融合人脸与手机行为分析模型
算法·安全·目标检测·计算机视觉·智能手机·视觉检测·边缘计算
悟能不能悟1 小时前
java的java.sql.Date和java.util.Date的区别,应该怎么使用
java·开发语言
2301_764441331 小时前
水星热演化核幔耦合数值模拟
python·算法·数学建模
循环过三天1 小时前
3.4、Python-集合
开发语言·笔记·python·学习·算法
_院长大人_2 小时前
设计模式-工厂模式
java·开发语言·设计模式
MATLAB代码顾问2 小时前
MATLAB实现决策树数值预测
开发语言·决策树·matlab
priority_key3 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
不染尘.4 小时前
2025_11_7_刷题
开发语言·c++·vscode·算法
ben9518chen4 小时前
嵌入式Linux C语言程序设计九
linux·c语言
似水এ᭄往昔4 小时前
【C++】--stack和queue
开发语言·c++