算法竞赛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[]操作如果找不到指定的键,会插入一个具有该键和默认值的元素。
相关推荐
fqbqrr5 小时前
2606C++,C++构的多态
开发语言·c++
biter down6 小时前
从 0 到 1 搭建 Python 接口自动化测试框架(博客系统实战)
开发语言·python
小欣加油6 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
lqqjuly6 小时前
前沿算法深度解析(二)
人工智能·算法·机器学习
Yolo_TvT7 小时前
C++:析构函数
c++
徐小夕8 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
threelab8 小时前
Three.js 物理模拟着色器 | 三维可视化 / AI 提示词
开发语言·前端·javascript·人工智能·3d·着色器
武器大师728 小时前
lv_binding_js 代码解读
开发语言·javascript·ecmascript
不知名的老吴8 小时前
线程的生命周期之线程“插队“
java·开发语言·python