当前位置: 首页 > news >正文

map的operator[]的实现

map的operator[]的实现

operator[]里包含插入操作,所以我们先看一下首先看一下map的insert函数

image-20250304115756303

返回值是一个pair类型。正常的常见的insert,插入成功返回true,失败返回false

这里设计的insert不单单返回布尔值,而是返回一个pair类型,包含迭代器和布尔值。就是为了实现operator[]

插入规则:

  1. key已经在map中,返回pair(key_iterator, false) (返回key位置的迭代器)
  2. key不在map中,返回pair(newly_inserted_iterator, true) (返回新插入元素的迭代器)

所以,insert也充当了查找的作用

那么operator[]是如何实现的呢?

operator[key]:

  1. 若key存在,返回value的引用
  2. 若key不存在,新插入一个pair(key, value()),并返回value的引用

所以operator不管怎样,都会返回key对应的value的引用,只是有可能value是新插入的。因此就可以这样来写:

V& operator[](const K& key){
    pair<iterator,bool> ret = insert(make_pair(key,V()));
    return ret.first->second;
}

// 简写:
V& operator[](const K& key){
    return ((insert(make_pair(key,V()))).first)->second;
}

这里有两个pair。一个是insert的返回值的pair<iterator,bool> ;另一个是iterator指向的元素 pair<key_type,value_type>

相关文章:

  • 字节旗下两款AI编程工具
  • 搭建laravle 数字产品销售平台 php
  • IO标准函数和时间函数
  • excel 数据透视表的创建、快速更新、格式修改
  • 分布式锁—Redisson的可重入锁
  • 2025.3.4
  • 音频3A测试--AEC(回声消除)测试
  • python连接neo4j的方式汇总
  • 使用 Apache POI 实现 Excel 单元格合并
  • 大模型工程师学习日记(十一):FAISS 高效相似度搜索和密集向量聚类的库
  • 探究DeepSeek R1与OpenAI模型文本相似度背后的秘密
  • Ubuntu20.04双系统安装及软件安装(十二):nomachine
  • 用AI学安卓游戏开发1——控制小球上下左右移动2
  • 网络安全的八大机制
  • kaggle竞赛(初识)
  • 74道高级Java面试合集,java开发模式面试题
  • 5、使用 pgAdmin4 图形化创建和管理 PostgreSQL 数据库
  • python:pymunk + pygame 模拟六边形中小球弹跳运动
  • 使用GitLink个人建站服务部署Allure在线测试报告
  • 【Swift 算法实战】存在重复元素 III
  • 万象城网站建设/seo整站优化更能准确获得客户
  • 莱州人才网/手机seo百度点击软件
  • 网站设计网页配色/seo推广软件
  • 合肥网站建设开发/长沙靠谱的关键词优化
  • 网站app免费下载软件大全/sem工作内容
  • 画网站 模板/牛排seo系统