算法竞赛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[]操作如果找不到指定的键,会插入一个具有该键和默认值的元素。
相关推荐
名字还没想好☜1 天前
Python f-string 进阶:数字格式化、对齐填充、调试 = 号与嵌套表达式
开发语言·数据库·python·字符串格式化·f-string
.道阻且长.1 天前
2.LeetCode算法习题讲解--双指针--复写零
算法·leetcode·职场和发展
·薯条大王1 天前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python
To_OC1 天前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode
白狐_7981 天前
408数据结构第5章:二叉树遍历序列题——技巧、判断与真题型总结
数据结构
一壶浊酒..1 天前
Scrape Webpack练习
开发语言·javascript·webpack
命运之光1 天前
【C语言完整代码】就诊信息管理系统
java·c语言·开发语言
命运之光1 天前
【C语言完整代码】图书管理系统:图书馆场景下的增删改查实战
c语言·开发语言
猿长大人1 天前
C# | Serilog 新手入门
开发语言·c#·.net·log