c++ list容器

std::list?是 C++ 標準庫中的一個雙向鏈表容器。與?std::vector(動態數組)和?std::deque(雙端隊列)不同,std::list?的元素在內存中不是連續存儲的,而是分散存儲并通過節點進行連接。這使得?std::list?在插入和刪除操作上通常比?std::vector?和?std::deque?更高效,尤其是在列表的中間位置。

以下是一些?std::list?的基本操作:

包含頭文件
#include <list>
創建list
std::list<int> myList; // 創建一個空的 int 類型的 list  
std::list<std::string> myStringList; // 創建一個空的 string 類型的 list
添加元素
  • 使用?push_back()?在末尾添加元素。

  • 使用?push_front()?在開頭添加元素。

  • 使用?insert()?在指定位置插入元素。

    myList.push_back(10);  
    myList.push_front(5);  
    myList.insert(myList.begin(), 3); // 在開頭插入 3

訪問元素
  • 使用迭代器訪問元素。

    for (std::list<int>::iterator it = myList.begin(); it != myList.end(); ++it) {  std::cout << *it << ' ';  
    }

    或者使用 C++11 的范圍 for 循環:

    for (const auto& elem : myList) {  std::cout << elem << ' ';  
    }

刪除元素
  • 使用?erase()?刪除指定位置的元素或一個范圍內的元素。

  • 使用?remove()?刪除所有等于給定值的元素。

  • 使用?clear()?刪除所有元素。

    myList.erase(myList.begin()); // 刪除開頭的元素  
    myList.remove(5); // 刪除所有值為 5 的元素  
    myList.clear(); // 刪除所有元素

修改元素

由于?std::list?是雙向鏈表,你不能像數組那樣通過索引直接訪問和修改元素(除非你將迭代器轉換為指向特定元素的指針,但這并不常見)。但你可以通過迭代器訪問并修改元素的值。

for (std::list<int>::iterator it = myList.begin(); it != myList.end(); ++it) {  if (*it == 5) {  *it = 10; // 修改值為 5 的元素為 10  }  
}
查找元素
  • 使用?find()?查找第一個等于給定值的元素的迭代器。

    auto it = myList.find(10);  
    if (it != myList.end()) {  std::cout << "Found 10 at position: " << std::distance(myList.begin(), it) << std::endl;  
    } else {  std::cout << "10 not found" << std::endl;  
    }

其它操作
  • size():返回列表中元素的數量。
  • empty():檢查列表是否為空。
  • front()?和?back():分別返回第一個和最后一個元素的引用(注意:如果列表為空,這些函數會拋出異常)。
  • begin()?和?end():分別返回指向第一個元素和“尾后元素”的迭代器。尾后元素是列表中的一個概念上的元素,它不包含任何值,只用作迭代器的結束標記。

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

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

相關文章

SpringBoot 集成 ChatGPT(附實戰源碼)

建項目 項目結構 application.properties openai.chatgtp.modelgpt-3.5-turbo openai.chatgtp.api.keyREPLACE_WITH_YOUR_API_KEY openai.chatgtp.api.urlhttps://api.openai.com/v1/chat/completionsopenai.chatgtp.max-completions1 openai.chatgtp.temperature0 openai.cha…

全局平均池化筆記

全局平均池化&#xff08;Global Average Pooling, GAP&#xff09;是一種用于卷積神經網絡&#xff08;CNN&#xff09;中的池化操作&#xff0c;其主要作用和優點包括&#xff1a; 減少參數數量&#xff1a;全局平均池化層將每個特征圖通過取其所有元素的平均值&#xff0c;壓…

ubuntu安裝yum方法【最新可用】

一、安裝命令 在根目錄&#xff08;root&#xff09;下執行 sudo apt-get install build-essential sudo apt-get install yum二、出錯處理 1、E: Package yum has no installation candidate 解決&#xff1a;更換鏡像源&#xff0c;找到自己的系統版本用vim進行更換&#xff…

make是什么

make是什么工具 make是一個自動化編譯工具,它本身并沒有編譯和鏈接的功能,而是用類似于批處理的方式——通過makefile文件中指示的依賴關系,調用makefile文件中使用的命令來完成編譯和鏈接的。makefile文件中記錄了源代碼文件之間的依賴關系,并說明了如何編譯各個源代碼文…

GmSSL3.X編譯iOS和Android動態庫

一、環境準備 我用的Mac電腦編譯&#xff0c;Xcode版本15.2&#xff0c;安卓的NDK版本是android-ndk-r21e。 1.1、下載國密源碼 下載最新的國密SDK源碼到本地。 1.2、安裝Xcode 前往Mac系統的AppStore下載安裝最新Xcode。 1.3、安卓NDK下載 下載NDK到本地&#xff0c;選…

Protobuf - 語法、字段使用規則、注意事項

目錄 前言 一、Protobuf 基本語法 1.1、Protoc 版本 1.2、文件格式配置 1.3、消息字段規則 1.3.1、字段數據類型 1.3.2、字段修飾規則 1.3.3、消息類型定義 1.3.4、enum 類型 1.3.5、Any 類型 1.3.6、oneof 類型 1.3.7、map 類型 1.3.8、默認值 1.3.9、更新消息…

css設置文字在固定寬度中等距分開(僅限于單行文本)

一、要實現的效果&#xff1a; 二、代碼 要在CSS中設置文本在一個固定寬度的容器中等距分開&#xff0c; 可以使用text-align: justify;屬性&#xff0c;它可以讓文本兩端對齊&#xff0c;看起來就像是等距分開的。 但是要注意&#xff0c;單獨使用text-align:justify;只能對單…

機器學習 - 模型訓練

機器學習&#xff08;Machine Learning&#xff0c;ML&#xff09;是利用計算機算法和統計模型&#xff0c;使計算機系統在沒有明確編程的情況下執行特定任務的過程。機器學習的整個過程可以分為以下幾個主要步驟&#xff1a; 訓練步驟 問題定義與需求分析 目標設定&#xff1…

【Qt】Qt多元素控件深入解析與實戰應用:列表(QListWidget)、表格(QTableWidget)與樹形(QTreeWidget)結構

文章目錄 前言&#xff1a;Qt中多元素控件&#xff1a;1. List Widget1.1. 代碼示例: 使用 ListWidget 2.Table Widget2.1. 代碼示例: 使用 QTableWidget 3. Tree Widget3.1. 代碼示例: 使用 QTreeWidget 總結&#xff1a; 前言&#xff1a; 在Qt框架中&#xff0c;用戶界面的…

2024.5.25

package com.Swork.file;import java.io.File; import java.io.IOException; import java.util.Date;public class Demo1 {public static void main(String[] args) {//1,構造文件對象System.out.println("1,構造文件對象");File file new File("D://Work//Fil…

C語言內存函數超詳細講解

個人主頁&#xff1a;C忠實粉絲 歡迎 點贊&#x1f44d; 收藏? 留言? 加關注&#x1f493;本文由 C忠實粉絲 原創 C語言內存函數超詳細講解 收錄于專欄【C語言學習】 本專欄旨在分享學習C語言學習的一點學習筆記&#xff0c;歡迎大家在評論區交流討論&#x1f48c; 目錄 1. m…

C++面向對象程序設計-北京大學-郭煒【課程筆記(十一)】

C面向對象程序設計-北京大學-郭煒【課程筆記&#xff08;十一&#xff09;】 1、string&#xff08;重要知識點&#xff09;1.2、string的賦值和鏈接1.3、比較string1.4、子串1.5、交換string1.6、尋找string中的字符1.7、刪除string中的字符1.8、替換string中的字符1.9、在str…

leetcode119-Pascal‘s Triangle II

題目 給定一個非負索引 rowIndex&#xff0c;返回「楊輝三角」的第 rowIndex 行。 在「楊輝三角」中&#xff0c;每個數是它左上方和右上方的數的和。 示例 1: 輸入: rowIndex 3 輸出: [1,3,3,1] 分析 楊輝三角每位數字就是上一行同一列&#xff0b;上一行前一列的和&#…

結構體;結構成員訪問操作符

結構體&#xff1a; 雖然c語言已經提供了內置類型&#xff0c;比如&#xff1a;char、short、int、long等&#xff0c;但還是不夠用&#xff0c;就好比我描述一個人&#xff0c;我需要描述他的身高&#xff0c;體重&#xff0c;年齡&#xff0c;名字等信息&#xff0c…

微軟密謀超級AI大模型!LangChain帶你輕松玩轉大模型開發

此前&#xff0c;據相關媒體報道&#xff0c;微軟正在研發一款名為MAI-1的最新AI大模型&#xff0c;其參數規模或將達5000億以上&#xff0c;遠超此前微軟推出的相關開源模型&#xff0c;其性能或能與谷歌的Gemini 1.5、Anthropic的Claude 3和OpenAI的GPT-4等知名大模型相匹敵。…

Linux文本處理三劍客(詳解)

一、文本三劍客是什么&#xff1f; 1. 對于接觸過Linux操作系統的人來說&#xff0c;應該都聽過說Linux中的文本三劍客吧&#xff0c;即awk、grep、sed&#xff0c;也是必須要掌握的Linux命令之一&#xff0c;三者都是用來處理文本的&#xff0c;但側重點各不相同&#xff0c;a…

Sam Altman微軟Build 2024最新演講:AI可能是下一個移動互聯網

大家好&#xff0c;我是木易&#xff0c;一個持續關注AI領域的互聯網技術產品經理&#xff0c;國內Top2本科&#xff0c;美國Top10 CS研究生&#xff0c;MBA。我堅信AI是普通人變強的“外掛”&#xff0c;所以創建了“AI信息Gap”這個公眾號&#xff0c;專注于分享AI全維度知識…

【C++11】lambda匿名函數和包裝器

目錄 一&#xff0c;lambda匿名函數 1-1&#xff0c;lambda的引入 1-2&#xff0c;lambda表達式書寫格式 1-3&#xff0c;lambda函數的名稱 1-4&#xff0c;lambda捕獲列表的使用 1-5&#xff0c;函數對象與lambda表達式 二&#xff0c;包裝器 2-1&#xff0c;function…

信息系統管理工程師知識點

信息系統管理工程師知識點 損壞包括自然災害、物理損壞&#xff08;磁盤壞、設備使用壽命&#xff0c;外力破損&#xff09;、設備故障&#xff08;停電、電磁干擾&#xff09;。 泄漏包括電磁輻射&#xff08;偵聽微機損傷過程&#xff09;、乘機而入&#xff08;合法用戶進…

一天了解一個機器學習模型——機器學習基礎知識

人工智能的兩大任務——預測和決策 預測包括對輸入目標的模式識別、標簽分類、回歸、預測未來數據、聚類 決策需要機器產生行動&#xff0c;改變狀態&#xff0c;如下圍棋、自動駕駛 支持人工智能的四大類技術 搜索——結合算法探索分支的好壞&#xff0c;從而做出決策&…