14-6-1C++STL的list

(一)list容器的基本概念

list容器簡介:

1.list是一個雙向鏈表容器,可高效地進行插入刪除元素

2.list不可以隨機存取元素,所以不支持at.(pos)函數與[ ]操作符


(二)list容器頭部和尾部的操作

list對象的默認構造形式:list<T>lst

list<int> lstInt;

list<float>lstFloat;

list塊頭尾的添加移除操作

1.list.push_front(elem);//在容器開頭插入一個元素

2.lst.push_back(elem);//在容器尾部加入元素

#include <iostream>

#include <list>

using namespace std;

int main()

{

?? list<int>lst;

?? lst.push_back(10);

?? lst.push_front(0);

?? list <int>::iterator it;

?? for(it=lst.begin() ;it!=lst.end() ;it++)

?? {

????????? cout<<*it<<" ";

?? }

?? cout<<endl;

?? return 0;

}

3.list.pop_back0;//刪除容器中最后一個元素

#include <iostream>
#include <list>
using namespace std;
int main()
{
?? ?list<int>lst;
?? ?lst.push_back(10);
?? ?lst.push_front(0);
?? ?list <int>::iterator it;
?? ?lst.pop_back();
?? ?for(it=lst.begin() ;it!=lst.end() ;it++)
?? ?{
?? ??? ?cout<<*it<<" ";
?? ?}
?? ?cout<<endl;
?? ?return 0;?
}

4.list.pop_front();//從容器開頭移除第一個元素

#include <iostream>
#include <list>
using namespace std;
int main()
{
?? ?list<int>lst;
?? ?lst.push_back(10);
?? ?lst.push_front(0);
?? ?list <int>::iterator it;
?? ?lst.pop_front();
?? ?for(it=lst.begin() ;it!=lst.end() ;it++)
?? ?{
?? ??? ?cout<<*it<<" ";
?? ?}
?? ?cout<<endl;
?? ?return 0;?
}

list的數據存取

  1. list.front();//返回第一個元素

#include <iostream>
#include <list>
using namespace std;
int main()
{
?? ?list<int>lst;
?? ?lst.push_back(10);
?? ?lst.push_front(0);
?? ?list <int>::iterator it;
?? ?int x=lst.front();
?? ?cout<<"front="<<x<<endl;
?? ?return 0;?
}

2.list.back();//返回最后一個元素

#include <iostream>

#include <list>

using namespace std;

int main()

{

? list<int>lst;

? lst.push_back(10);

? lst.push_front(0);

? list <int>::iterator it;

? int y=lst.back();

? cout<<"back="<<y<<endl;

? return 0;

}

#include <iostream>
#include <list>
using namespace std;
int main()
{
?? ?list<int>lst;
?? ?lst.push_back(10);
?? ?lst.push_front(0);
?? ?list <int>::iterator it;
?? ?int y=lst.back();
?? ?cout<<"back="<<y<<endl;
?? ?return 0;?
}

數據的修改

#include <iostream>
#include <list>
using namespace std;
int main()
{
?? ?list<int>lst;
?? ?lst.push_back(10);
?? ?lst.push_front(0);
?? ?list <int>::iterator it;
? ? lst.front()=100;
?? ?lst.back() =200;
?? ?for(it=lst.begin();it!=lst.end() ;it++)
?? ?{
?? ??? ?cout<<*it<<" ";
?? ?}
?? ?cout<<endl;
?? ?return 0;?
}


(三)list與迭代器

list容器的迭代器是“雙向迭代器”:雙向迭代器從兩個方向讀寫容器。除了提供前向迭代器的全部操作之外,雙向迭代器還提供前置和后置的自減運算

rendbegin......rbeginend

正向1.list.begin();//返容器中第一個元素的迭代器

正向2.list.end();//返回容器中最后一個元素之后的迭代器

#include <iostream>
#include <list>
using namespace std;
int main()
{
?? ?list<int>lst;
?? ?lst.push_back(1);?
?? ?lst.push_back(2);
?? ?lst.push_back(3);
?? ?lst.push_back(4) ;

?? ?list <int>::iterator it;
? ?
?? ?for(it=lst.begin();it!=lst. end() ;it++)
?? ?{
?? ??? ?cout<<*it<<" ";
?? ?}
?? ?cout<<endl;
?? ?return 0;?
}

反向3.list.rbegin();//返回容器中倒數第一個元素的迭代器

反向4.list.rend();//返回容器中倒數最后一個元素的后面的迭代器

#include <iostream>
#include <list>
using namespace std;
int main()
{
?? ?list<int>lst;
?? ?lst.push_back(1);?
?? ?lst.push_back(2);
?? ?lst.push_back(3);
?? ?lst.push_back(4) ;

?? ?list <int>::reverse_iterator it;
? ?
?? ?for(it=lst.rbegin();it!=lst.rend() ;it++)
?? ?{
?? ??? ?cout<<*it<<" ";
?? ?}
?? ?cout<<endl;
?? ?return 0;?
}

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

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

相關文章

在sortablejs的拖拽排序情況下阻止input拖拽事件

如題 問題 在vue3的elementPlus的table中&#xff0c;通過sortablejs添加了行拖拽功能&#xff0c;但是在行內會有輸入框&#xff0c;此時拖拽輸入框會觸發sortablejs的拖拽功能 解決 基于這個現象&#xff0c;我懷疑是由于拖拽事件未綁定而冒泡到后面的行上從而導致的拖拽…

21.Word:小趙-畢業論文排版?【39】

目錄 題目? NO1.2 NO3.4 NO5.6 NO7.8.9 NO10.11.12 題目 NO1.2 自己的論文當中接收老師的修改&#xff1a;審閱→比較→源文檔&#xff1a;考生文件夾&#xff1a;Word.docx→修訂的文檔&#xff1a;考生文件夾&#xff1a;教師修改→確定→接收→接收所有修訂將合并之…

leetcode_鏈表 876.鏈表的中間節點

876.鏈表的中間節點 給你單鏈表的頭結點 head &#xff0c;請你找出并返回鏈表的中間結點。如果有兩個中間結點&#xff0c;則返回第二個中間結點。思路&#xff1a;快慢指針&#xff0c;創建兩個指針fast和slow&#xff0c;fast指針每次移動兩步&#xff0c;slow指針每次移動…

深度學習 DAY3:NLP發展史及早期的前饋神經網絡(ANN)及多任務學習

NLP發展史 NLP發展脈絡簡要梳理如下&#xff1a; 2001 - Neural language models&#xff08;神經語言模型&#xff09; 2008 - Multi-task learning&#xff08;多任務學習&#xff09; 2013 - Word embeddings&#xff08;詞嵌入&#xff09; 2013 - Neural networks for NL…

全面了解 Web3 AIGC 和 AI Agent 的創新先鋒 MelodAI

不管是在傳統領域還是 Crypto&#xff0c;AI 都是公認的最有前景的賽道。隨著數字內容需求的爆炸式增長和技術的快速迭代&#xff0c;Web3 AIGC&#xff08;AI生成內容&#xff09;和 AI Agent&#xff08;人工智能代理&#xff09;正成為兩大關鍵賽道。 AIGC 通過 AI 技術生成…

54.數字翻譯成字符串的可能性|Marscode AI刷題

1.題目 問題描述 小M獲得了一個任務&#xff0c;需要將數字翻譯成字符串。翻譯規則是&#xff1a;0對應"a"&#xff0c;1對應"b"&#xff0c;依此類推直到25對應"z"。一個數字可能有多種翻譯方法。小M需要一個程序來計算一個數字有多少種不同的…

FileReader使用

FileReader : 讀取文件內容的api&#xff0c;&#xff0c;&#xff0c;在前端處理上傳的文件&#xff0c;&#xff0c;比如預覽圖片 readAsDataURL(file) &#xff1a; 讀取為base64編碼的 data urlreadAsText() &#xff1a; 讀取為文本readAsArrayBuffer() : 讀取為二進制 …

RabbitMQ5-死信隊列

目錄 死信的概念 死信的來源 死信實戰 死信之TTl 死信之最大長度 死信之消息被拒 死信的概念 死信&#xff0c;顧名思義就是無法被消費的消息&#xff0c;一般來說&#xff0c;producer 將消息投遞到 broker 或直接到queue 里了&#xff0c;consumer 從 queue 取出消息進…

JavaScript系列(48)-- 3D渲染引擎實現詳解

JavaScript 3D渲染引擎實現詳解 &#x1f3ae; 今天&#xff0c;讓我們深入探討JavaScript的3D渲染引擎實現。通過WebGL和現代JavaScript技術&#xff0c;我們可以構建一個功能完整的3D渲染系統。 3D渲染基礎概念 &#x1f31f; &#x1f4a1; 小知識&#xff1a;3D渲染引擎的…

10JavaWeb——SpringBootWeb案例01

前面我們已經講解了Web前端開發的基礎知識&#xff0c;也講解了Web后端開發的基礎(HTTP協議、請求響應)&#xff0c;并且也講解了數據庫MySQL&#xff0c;以及通過Mybatis框架如何來完成數據庫的基本操作。 那接下來&#xff0c;我們就通過一個案例&#xff0c;來將前端開發、后…

【面試題】 Java 三年工作經驗(2025)

問題列表 為什么選擇 spring boot 框架&#xff0c;它與 Spring 有什么區別&#xff1f;spring mvc 的執行流程是什么&#xff1f;如何實現 spring 的 IOC 過程&#xff0c;會用到什么技術&#xff1f;spring boot 的自動化配置的原理是什么&#xff1f;如何理解 spring boot 中…

JAVA 接口、抽象類的關系和用處 詳細解析

接口 - Java教程 - 廖雪峰的官方網站 一個 抽象類 如果實現了一個接口&#xff0c;可以只選擇實現接口中的 部分方法&#xff08;所有的方法都要有&#xff0c;可以一部分已經寫具體&#xff0c;另一部分繼續保留抽象&#xff09;&#xff0c;原因在于&#xff1a; 抽象類本身…

ResNeSt: Split-Attention Networks論文學習筆記

這張圖展示了一個名為“Split-Attention”的神經網絡結構&#xff0c;該結構在一個基數組&#xff08;cardinal group&#xff09;內進行操作。基數組通常指的是在神經網絡中處理的一組特征或通道。圖中展示了如何通過一系列操作來實現對輸入特征的注意力機制。 以下是圖中各部…

數據收集后臺服務概要設計

為了幫助大家設計一個數據指標匯總的后端應用&#xff0c;我將提供一個概要設計和表設計的建議。這個設計將基于常見的數據收集需求&#xff0c;假設你需要收集、存儲和匯總來自不同數據源的指標數據。 1. 概要設計 1.1 系統架構 數據收集層&#xff1a;負責從不同數據源&am…

探秘 TCP TLP:從背景到實現

回家的路上還討論了個關于 TCP TLP 的問題&#xff0c;閑著無事縷一縷。本文內容參考自 Tail Loss Probe (TLP): An Algorithm for Fast Recovery of Tail Losses 以及 Linux 內核源碼。 TLP&#xff0c;先說緣由。自 TCP 引入 Fast retrans 機制就是為了盡力避免 RTO&#xf…

設計模式Python版 原型模式

文章目錄 前言一、原型模式二、原型模式示例三、原型管理器 前言 GOF設計模式分三大類&#xff1a; 創建型模式&#xff1a;關注對象的創建過程&#xff0c;包括單例模式、簡單工廠模式、工廠方法模式、抽象工廠模式、原型模式和建造者模式。結構型模式&#xff1a;關注類和對…

一文大白話講清楚webpack進階——5——dev-server原理及其作用

文章目錄 一文大白話講清楚webpack進階——5——dev-server原理及其作用1. webpack的作用2. dev-server的作用3. dev-server的原理3.1 啥是webpack-dev-middleware3.2 HMR 一文大白話講清楚webpack進階——5——dev-server原理及其作用 1. webpack的作用 webpack的作用我們之…

【第十天】零基礎入門刷題Python-算法篇-數據結構與算法的介紹-兩種常見的字符串算法(持續更新)

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、Python數據結構與算法的詳細介紹1.Python中的常用的字符串算法2.字符串算法3.詳細的字符串算法1&#xff09;KMP算法2&#xff09;Rabin-Karp算法 總結 前言…

Writing an Efficient Vulkan Renderer

本文出自GPU Zen 2。 Vulkan 是一個新的顯式跨平臺圖形 API。它引入了許多新概念&#xff0c;即使是經驗豐富的圖形程序員也可能不熟悉。Vulkan 的主要目標是性能——然而&#xff0c;獲得良好的性能需要深入了解這些概念及其高效應用方法&#xff0c;以及特定驅動程序實現的實…

使用QSqlQueryModel創建交替背景色的表格模型

class UserModel(QSqlQueryModel):def __init__(self):super().__init__()self._query "SELECT name, age FROM users"self.refresh()def refresh(self):self.setQuery(self._query)# 重新定義data()方法def data(self, index, role): if role Qt.BackgroundRole…