STL常用容器整理

STL常用容器操作整理

  • STL常用容器操作整理(string/vector/set/map)
    • 一、string(字符串)
      • 構造函數
      • 元素訪問
      • 修改操作
      • 容量操作
      • 子串與查找
    • 二、vector(動態數組)
      • 構造函數
      • 元素訪問
      • 修改操作
      • 容量操作
    • 三、set(有序不重復集合)
      • 構造函數
      • 遍歷set
      • 元素操作
      • 范圍操作
      • 其他
    • 四、map(鍵值對字典)
      • 構造函數
      • 遍歷map
      • 元素訪問
      • 元素操作
      • 范圍操作
      • 其他
    • 五、總結對比
    • 六、運用實踐

STL常用容器操作整理(string/vector/set/map)

一、string(字符串)

構造函數

  • string s1:空字符串
  • string s2("text"):用字符串字面量初始化
  • string s3(s2, start, len):從s2的start位置截取len長度

元素訪問

  • s[i]:訪問第i個字符(無邊界檢查)
  • s.at(i):訪問第i個字符(有邊界檢查)
  • s.front()/s.back():首尾字符

修改操作

  • s.append(str):追加字符串
  • s.push_back(c):追加單個字符
  • s.insert(pos, str):在pos位置插入字符串
  • s.erase(pos, len):刪除從pos開始的len個字符
  • s.replace(pos, len, str):替換指定位置內容
  • s.clear():清空字符串

容量操作

  • s.size()/s.length():返回字符數量
  • s.empty():判斷是否為空
  • s.resize(n, c):調整長度,用字符c填充

子串與查找

  • s.substr(pos, len):提取子串
  • s.find(str, pos):從pos開始查找子串,返回位置
  • s.rfind(str, pos):反向查找

二、vector(動態數組)

構造函數

  • vector<T> v:空vector
  • vector<T> v(n, val):n個元素,初始化為val

元素訪問

  • v[i]/v.at(i):訪問元素(有無邊界檢查)
  • v.front()/v.back():首尾元素
  • v.data():返回底層數組指針

修改操作

  • v.push_back(val):尾部插入元素
  • v.pop_back():刪除尾部元素
  • v.insert(it, val):在迭代器位置插入元素
  • v.erase(it):刪除迭代器指向元素
  • v.clear():清空容器

容量操作

  • v.size():元素數量
  • v.empty():判斷是否為空
  • v.resize(n):調整元素數量
  • v.reserve(n):預分配內存空間

三、set(有序不重復集合)

構造函數

  • set<T> s:空set(默認升序)
  • set<T, greater<T>> s:降序set

遍歷set

  1. suto it = st.begin();

  2. for( ; it != st.end(); ++it) cout << *it<<" ")

元素操作

  • s.insert(val):插入元素(返回pair<iterator, bool>)
  • s.erase(val):刪除元素
  • s.count(val):統計元素出現次數(0或1)
  • s.find(val):查找元素,返回迭代器

范圍操作

  • s.lower_bound(val):返回第一個≥val的迭代器
  • s.upper_bound(val):返回第一個>val的迭代器
  • s.equal_range(val):返回等于val的范圍(pair)

其他

  • s.size()/s.empty()/s.clear():同vector

四、map(鍵值對字典)

構造函數

  • map<Key, T> m:空map(按鍵升序)

遍歷map

  1. for(auto &it : arr):arr是創建的map變量
  2. it.first, it.second:訪問鍵,值

元素訪問

  • m[key]:訪問/插入元素(鍵不存在時自動創建)
  • m.at(key):訪問元素(鍵不存在時拋異常)

元素操作

  • m.insert({key, val}):插入鍵值對
  • m.erase(key):刪除指定鍵的元素
  • m.count(key):統計鍵是否存在
  • m.find(key):查找鍵,返回迭代器

范圍操作

  • m.lower_bound(key)/m.upper_bound(key):同set
  • m.equal_range(key):返回鍵的匹配范圍

其他

  • m.size()/m.empty()/m.clear():同vector

五、總結對比

容器特性典型應用場景
string動態字符序列文本處理
vector動態數組,快速隨機訪問替代C數組,高頻增刪尾
set有序唯一元素集合去重,范圍查詢
map鍵值對有序映射字典,快速查找鍵

六、運用實踐

注意:所有容器均支持迭代器操作(begin(), end()等)
完整文檔參考:C++ STL官方文檔# 歡迎使用Markdown編輯器

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

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

相關文章

Unity 實現傷害跳字

核心組件&#xff1a; Dotween TextMeshPro 過程軌跡如下圖&#xff1a; 代碼如下&#xff1a; using System.Collections; using System.Collections.Generic; using DG.Tweening; using TMPro; using UnityEngine; using UnityEngine.Pool;public class …

Ubuntu 22.04 AI大模型環境配置及常用工具安裝

一、基礎環境準備 1.1 系統準備 建議使用 Ubuntu22.04 以下配置皆以 Ubuntu22.04 系統版本為例 1.2 安裝git apt-get update && apt-get install git -y1.3 安裝 Python 3.9 【建議安裝 3.10】&#xff08;安裝miniconda或者conda來管理虛擬環境&#xff09; wget …

STM32單片機入門學習——第27節: [9-3] USART串口發送串口發送+接收

寫這個文章是用來學習的,記錄一下我的學習過程。希望我能一直堅持下去,我只是一個小白,只是想好好學習,我知道這會很難&#xff0c;但我還是想去做&#xff01; 本文寫于&#xff1a;2025.04.08 STM32開發板學習——第27節: [9-3] USART串口發送&串口發送接收 前言開發板說…

前端實現docx格式word文件預覽,可以兼容原生、vue2、以及uni-app 項目,詳細步驟。

上一篇記錄了PDF文件預覽功能。這一篇記錄下docx文件預覽。 核心文件 doc.html <script src"./build/polyfill.min.js"></script> <script src"./build/jszip.min.js"></script> <script src"./build/docx-preview.js&…

Java中的ArrayList方法

1. 創建 ArrayList 實例 你可以通過多種方式創建 ArrayList 實例&#xff1a; <JAVA> ArrayList<String> list new ArrayList<>(); // 創建一個空的 ArrayList ArrayList<String> list new ArrayList<>(10); // 創建容量為 10 的 ArrayList …

【anaconda下py】

38 https://repo.anaconda.com/archive/Anaconda3-2020.11-Windows-x86.exe 39 https://repo.anaconda.com/archive/Anaconda3-2022.10-Windows-x86_64.exe 310https://repo.anaconda.com/archive/Anaconda3-2023.03-0-Windows-x86_64.exe 歷史列表Index of /archive 遠程&…

linux--------------進程控制(下)

一、進程等待 1.1 進程等待必要性 子進程退出后&#xff0c;若父進程不管不顧&#xff0c;可能會產生 “僵尸進程”&#xff0c;進而造成內存泄漏。進程一旦變為僵尸狀態&#xff0c;即使使用 kill -9 也無法將其殺死&#xff0c;因為無法殺死一個已死的進程。父進程需要了解…

docker 中跑faster-whisper 教程(1050顯卡)

之前我本地機器運行faster-whisper 會報錯類似 Could not load library libcudnn_ops_infer.so.8github 上也有類似的情況 &#xff1a;https://github.com/SYSTRAN/faster-whisper/issues/516#issuecomment-2785038635 缺少.so.8 文件&#xff0c;我通過以下方式&#xff0c;…

人大金倉數據庫dum文件進行備份數據和恢復數據

邏輯備份命令: sys_dump -U SYSTEM -d problem_dev -Fc -f /db_backup/kingbase/dump/problem_dev/problem_dev20240329.dmp用戶:SYSTEM 數據庫名:problem_dev 格式:自定義格式(-Fc) 輸出文件:/db_backup/kingbase/dump/problem_dev/problem_dev20240329.dmp sys_dump…

Java的Selenium元素定位-xpath

xpath其實就是一個path(路徑)&#xff0c;一個描述頁面元素位置信息的路徑&#xff0c;相當于元素的坐標xpath基于XML文檔樹狀結構&#xff0c;是XML路徑語言&#xff0c;用來查詢xml文檔中的節點。 絕對定位 從根開始找--/(根目錄)/html/body/div[2]/div/form/div[5]/button缺…

python-Leetcode 65.搜索旋轉排序數組

題目&#xff1a; 整數數組nums按升序排列&#xff0c;數組中的值互不相同 在傳遞給函數之前&#xff0c;nums在預先未知的某個小標K上進行了旋轉&#xff0c;使數組變為[nums[k], nums[k1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]]&#xff0c;小標從0開始計數。…

學透Spring Boot — 010. 單元測試和Spring Test

系列文章目錄 這是CSDN postnull 博客《學透Spring Boot》系列的一篇&#xff0c;更多文章請移步&#xff1a;Postnull - 學透Spring Boot系列文章 文章目錄 系列文章目錄前言1. 基本概念UT 單元測試TDD 測試驅動開發UT測試框架Mock框架 3. Spring Test為什么要用Spring Test引…

Chrome 135 版本新特性

Chrome 135 版本新特性 一、Chrome 135 版本瀏覽器更新 ** 1. 第三方托管賬戶注冊遷移到 OIDC 授權碼流程** Chrome 135 將賬戶注冊的登錄頁面從營銷網站遷移到動態網站&#xff0c;同時也將 OpenID Connect (OIDC) 的隱式流程遷移到授權碼流程。這樣做的目的是進一步提升第…

Docker Swarm集群搭建與管理全攻略

文章目錄 一、節點準備二、初始化 manager 節點三、管理 swarm 集群中的 worker 節點1、添加 worker 節點2、查看 worker 節點3、刪除 worker 節點 四、管理 swarm 集群服務1、創建服務2、查看服務3、刪除服務 五、管理 swarm 節點服務1、節點標簽管理2、創建服務3、查看服務4、…

離線語音識別 ( 小語種國家都支持)可定制詞組

1產品介紹 離線語音模組采用神經網絡算法&#xff0c;支持語音識別、自學習等功能。運用此模組將 AI 技 術賦能產品&#xff0c;升級改造出語音操控的智能硬件 ( 例如風扇、臺燈、空調、馬桶、按摩椅、運 動相機、行車記錄儀等 ) 。支持全球多種語言識別&#xff0c;如中文…

Docker與VNC的使用

https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc 下載nvc 客戶端 https://downloads.realvnc.com/download/file/viewer.files/VNC-Viewer-7.12.0-Windows.exe 服務端 docker pull dorowu/ubuntu-desktop-lxde-vnc#下載成功 docker pull dorowu/ubuntu-desktop-l…

Linux系統學習Day0——了解和熟悉Linux系統的遠程終端登錄和數據傳輸

一、Windows系統與Linux系統虛擬機通過橋接進行網絡連接 &#xff08;一&#xff09;橋接模式 橋接模式是虛擬機網絡連接的一種常見方式&#xff0c;其核心原理是通過虛擬網卡將Linux虛擬機與宿主機的物理網卡建立橋接關系&#xff0c;使虛擬機能夠直接接入物理網絡。在該模式…

【開題報告+論文+源碼】基于springboot的農貿菜市場租位管理系統的設計與實現

項目背景與意義 隨著信息技術的快速發展和普及&#xff0c;信息化管理已成為各行業提升運營效率和服務質量的重要手段。農貿菜市場作為城市生活的重要組成部分&#xff0c;其管理效率和服務水平直接關系到市民的日常生活體驗。傳統的農貿菜市場租位管理方式往往存在信息不對稱、…

Codecademy—— 交互式編程學習的樂園

一、網站概述 Codecademy 是一家美國在線學習編程知識的網站&#xff0c;它為編程學習者提供了一種全新的學習方式。在如今眾多的編程學習平臺中&#xff0c;Codecademy 憑借其獨特的優勢脫穎而出&#xff0c;吸引了全球數百萬用戶。其目標是幫助更多人輕松學習編程&#xff0…

WEB安全--XSS--DOM破壞

一、前言 繼XSS基礎篇后&#xff0c;我們知道了三種類型的XSS&#xff0c;這篇文章主要針對DOM型XSS的原理進行深入解析。 二、DOM型XSS原理 2.1、什么是DOM 以一個形象的比喻&#xff1a; 網頁就像是一座房子&#xff0c;而 **DOM** 就是這座房子的“藍圖”或者“結構圖”。…