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>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72404.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72404.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72404.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

定時器的編碼器接口模式

選擇編碼器接口模式的方法是&#xff1a;如果計數器只在TI2的邊沿計數&#xff0c;則置TIMx_SMCR寄存器中的SMS001&#xff0c;如果只在TI1邊沿計數&#xff0c;則置SMS010&#xff0c;如果計數器同時在TI1和TI2邊沿計數&#xff0c;則置SMS 011 明確一點&#xff0c;計數器…

Openshift配置默認調度

配置默認調度選擇角色為worker的機器運行pod。 編輯scheduler oc edit schedulers.config.openshift.iospec:defaultNodeSelector: node-role.kubernetes.io/worker ## 添加這一段如果pod需要運行在非worker主機&#xff0c;需要配置pod所在的項目添加注解 openshift.io/node…

突破光學成像局限:全視野光學血管造影技術新進展

全視野光學血管造影&#xff08;FFOA&#xff09;作為一種實時、無創的成像技術&#xff0c;能夠提取生物血液微循環信息&#xff0c;為深入探究生物組織的功能和病理變化提供關鍵數據。然而&#xff0c;傳統FFOA成像方法受到光學鏡頭景深&#xff08;DOF&#xff09;的限制&am…

OpenHarmony 進階——HDF 驅動框架的原理小結

文章大綱 引言一、HDF的驅動加載&#xff08;驅動安裝&#xff09;方式1、動態加載&#xff08;主要是uhdf&#xff09;2、靜態加載(主要是khdf)2.1、驅動入口實現2.1.1、Bind接口2.1.2、Init接口2.1.3、Release接口 2.2、HDF_INIT 驅動入口符號2.3、獲取驅動列表2.4、獲取設備…

大模型應用:多輪對話(prompt工程)

概述 在與大型語言模型&#xff08;如ChatGPT&#xff09;交互的過程中&#xff0c;我們常常體驗到與智能助手進行連貫多輪對話的便利性。那么&#xff0c;當我們開啟一個新的聊天時&#xff0c;系統是如何管理聊天上下文的呢&#xff1f; 一、初始上下文的建立 1. 創建新會…

如何為JAR設置定時重啟?

AI越來越火了&#xff0c;我們想要不被淘汰就得主動擁抱。推薦一個人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;最重要的屌圖甚多&#xff0c;忍不住分享一下給大家。點擊跳轉到網站 前面我們說過了如何將jar交由Systemctl管理&#xff0c;下面我們…

神碼AC-AP無線部署

神碼AC-AP無線部署: 1.設置基礎網絡 交換機設置 service dhcp ! ip dhcp pool ap (AP用地址) network-address 10.1.1.0 255.255.255.0 default-router 10.1.1.254 option 43 hex 010401010101 &#xff08;AC IP地址16進制&#…

【Redis】常用命令匯總

Redis 作為高性能的鍵值存儲數據庫&#xff0c;提供了豐富的命令集&#xff0c;主要涵蓋 字符串 (String)、哈希 (Hash)、列表 (List)、集合 (Set)、有序集合 (ZSet)、鍵 (Keys)、Geo&#xff08;地理位置&#xff09;、HyperLogLog&#xff08;基數統計&#xff09;、Bitmap&a…

Redis - 高可用實現方案解析:主從復制與哨兵監控

文章目錄 Pre概述Redis 高可用實現方案一、主從復制機制1.1 全量同步流程1.2 增量同步&#xff08;PSYNC&#xff09;流程 二、哨兵監控機制2.1 故障轉移時序流程 三、方案對比與選型建議四、生產環境實踐建議 Pre Redis-入門到精通 Redis進階系列 Redis進階 - Redis主從工作…

2025年滲透測試面試題總結-02(題目+回答)

網絡安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 阿里云安全實習 一、代碼審計經驗與思路 二、越權漏洞原理與審計要點 三、SSRF漏洞解析與防御 四、教…

水滴tabbar canvas實現思路

廢話不多說之間看效果圖,只要解決了這個效果水滴tabbar就能做出來了 源碼地址 一、核心實現步驟分解 布局結構搭建 使用 作為繪制容器 設置 width=600, height=200 基礎尺寸 通過 JS 動態計算實際尺寸(適配高清屏) function initCanvas() {// 獲取設備像素比(解決 Re…

解決各大瀏覽器中http地址無權限調用麥克風攝像頭問題(包括谷歌,Edge,360,火狐)后續會陸續補充

項目場景&#xff1a; 在各大瀏覽器中http地址調用電腦麥克風攝像頭會沒有權限&#xff0c;http協議無法使用多媒體設備 原因分析&#xff1a; 為了用戶的隱私安全&#xff0c;http協議無法使用多媒體設備。因為像攝像頭和麥克風屬于可能涉及重大隱私問題的API&#xff0c;ge…

網絡安全蜜罐產品研究現狀

&#x1f345; 點擊文末小卡片 &#xff0c;免費獲取網絡安全全套資料&#xff0c;資料在手&#xff0c;漲薪更快 一、知識點總結 1、蜜罐&#xff08;Honeypot&#xff09;&#xff1a;誘捕攻擊者的一個陷阱。 2、蜜網&#xff08;Honeynet&#xff09;&#xff1a;采用了技術…

el-card 結合 el-descriptions 作為信息展示

記錄下el-card 組合 el-descriptions 實現動態展示信息 文章結構 實現效果1. el-descriptions 組件使用1.1 結合v-for實現列表渲染1.2 解析 2. 自定義 el-descriptions 樣式2.1 修改背景色、字體顏色2.2 調整字體大小2.3 解析 3. el-card 結合 el-descriptions 作為信息展示3.…

【Java---數據結構】鏈表 LinkedList

1. 鏈表的概念 鏈表用于存儲一系列元素&#xff0c;由一系列節點組成&#xff0c;每個節點包含兩部分&#xff1a;數據域和指針域。 數據域&#xff1a;用于存儲數據元素 指針域&#xff1a;用于指向下一個節點的地址&#xff0c;通過指針將各個節點連接在一起&#xff0c;形…

python-leetcode-不同的二叉搜索樹 II

95. 不同的二叉搜索樹 II - 力扣&#xff08;LeetCode&#xff09; # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class S…

動態規劃/貪心算法

一、動態規劃 動態規劃 是一種用于解決優化問題的算法設計技術&#xff0c;尤其適用于具有重疊子問題和最優子結構性質的問題。它通過將復雜問題分解為更簡單的子問題&#xff0c;并保存這些子問題的解以避免重復計算&#xff0c;從而提高效率。 動態規劃的核心思想 最優子結…

2月28日,三極管測量,水利-51單片機

眾所周知&#xff0c;三極管&#xff08;BJT&#xff09;有三個管腳&#xff0c;基極&#xff08;B&#xff09;、集電極&#xff08;C&#xff09;、發射極&#xff08;E&#xff09;&#xff0c;在實際應用中&#xff0c;不可避免地會遇到引腳辨別的問題。接下來就講下三極管…

Linux常見基本指令(二)

目錄 1、Linux基礎指令 文本查看 cat指令 more指令 less指令 head指令&tail指令 時間相關指令 查找、搜索相關指令 find指令 which指令 whereis指令 alias指令 grep指令 打包壓縮和解壓縮 zip指令&#xff08;壓縮&#xff09; unzip&#xff08;解壓&…

Day 55 卡瑪筆記

這是基于代碼隨想錄的每日打卡 所有可達路徑 題目描述 ? 給定一個有 n 個節點的有向無環圖&#xff0c;節點編號從 1 到 n。請編寫一個函數&#xff0c;找出并返回所有從節點 1 到節點 n 的路徑。每條路徑應以節點編號的列表形式表示。 輸入描述 ? 第一行包含兩個整數…