首頁 後端開發 C#.Net教程 C++中 STL list使用方法實例

C++中 STL list使用方法實例

Apr 12, 2017 pm 03:03 PM
list stl

這篇文章主要介紹了C++中STL list詳解及簡單實例的相關資料,需要的朋友可以參考下

C++中STL list詳解

# 1、List: 內部實作是雙向鍊錶,可以有效率的進行插入刪除,但不能夠進行隨機存取

2.、範例程式:


#include "stdafx.h" 
#include <iostream> 
#include <list> 
#include <iterator> 
#include <algorithm> 
using namespace std; 
const int num[5] = {1,3,2,4,5}; 
bool status(const int & value) 
{ 
 return value>6?true:false; 
} 
int _tmain(int argc, _TCHAR* argv[]) 
{ 
 list<int> list1; 
 copy(num,num+5,back_insert_iterator<list<int>>(list1)); 
 copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," ")); 
 cout<<endl; 
 list1.sort(greater<int>());//5 4 3 2 1 
 copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," ")); 
 cout<<endl; 
 list<int>::iterator it = list1.begin(); 
 while (it != list1.end()) 
 { 
  (*it) += 2; 
  it++; 
 } 
 //7 6 5 4 3 
 list<int>::reverse_iterator re_it = list1.rbegin(); 
 cout<<"从后向前输出: "; 
 while (re_it != list1.rend()) 
 { 
  cout<<*re_it<<" "; 
  re_it++; 
 } 
 cout<<endl; 
 list1.reverse();// 3 4 5 6 7 
 list1.push_back(8);//3 4 5 6 7 8 
 list1.pop_front();//4 5 6 7 8 
 list1.remove(6);//4 5 7 8 
 list1.remove_if(status);// 4 5 
 list1.resize(4);// 4 5 0 0 
 list1.resize(6,1);// 4 5 0 0 1 1 
 list1.unique();//4 5 0 1 
 copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," ")); 
 cout<<endl; 
 list1.clear(); 
 cout<<"当前list1含有元素个数:"<<list1.size()<<endl; 
 list1.push_back(7);//list1:7 
 list<int> list2(3,2);//2 2 2 
 list2.merge(list1,greater<int>());//list2: 7 2 2 2 
 list2.insert(++list2.begin(),3);//list2: 7 3 2 2 2 
 list2.swap(list1);//list1:7 3 2 2 2 list2:empty 
 list1.erase(++list1.begin(),list1.end());// 7 
 copy(list1.begin(),list1.end(),ostream_iterator<int>(cout," ")); 
 cout<<endl; 
 system("pause"); 
}
登入後複製

執行結果圖片:


#3、List 方法 

##說明constructor#destructor#operator=assignfrontbackbeginendrbeginrend#push_back刪除條件滿足的元素(遍歷一次鍊錶),參數為自訂的回呼函數判斷是否鍊錶為空##返回鍊錶最大可能長度#傳回鍊錶中元素個數重新定義鍊錶長度(兩重載函數)

list成員

建構子

析構函數

#賦值重載運算子

已指派值

傳回第一個元素的參考

傳回最後一元素的引用

#傳回第一個元素的iterator

傳回最後一個元素的下一位置的iterator

傳回鍊錶最後一元素的後向指標reverse_iterator

#傳回鍊錶第一元素的下一位置的reverse_iterator

##增加一個資料到鍊錶尾

push_front
#增加一個資料到鍊錶頭

pop_back
刪除鍊錶尾的一個元素

pop_front
刪除鍊錶頭的一元素

clear
刪除所有元素

erase
刪除一個元素或一個區域的元素(兩個重載)

#remove 
刪除鍊錶中符合值的元素(符合元素全部刪除)

# #remove_if

empty

#max_size

size

#resize

############ reverse############反轉鍊錶###################sort ###########對鍊錶排序,預設升序##################merge#############合併兩個有序鍊錶並使之有序###### #############splice ############對兩個鍊錶結合(三個重載函數) 結合後第二個鍊錶清空#### ##############insert############在指定位置插入一個或多個元素(三個重載函數)######## ###########swap############交換兩個鍊錶(兩個重載)################ ##unique ############刪除鄰近重複元素 ################

以上是C++中 STL list使用方法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何在 C++ STL 中實作客製化的比較器? 如何在 C++ STL 中實作客製化的比較器? Jun 05, 2024 am 11:50 AM

實作自訂比較器可以透過建立一個類,重載運算子()來實現,該運算子接受兩個參數並指示比較結果。例如,StringLengthComparator類別透過比較字串長度來排序字串:建立一個類別並重載運算子(),傳回布林值指示比較結果。在容器演算法中使用自訂比較器進行排序。透過自訂比較器,我們可以根據自訂標準對資料進行排序或比較,即使需要使用自訂比較標準。

php如何實作Redis的List操作 php如何實作Redis的List操作 May 26, 2023 am 11:51 AM

List操作//從list頭部插入一個值。 $ret=$redis->lPush('city','guangzhou');//從list尾部插入一個值。 $ret=$redis->rPush('city','guangzhou');//取得清單指定區間中的元素。 0表示列表第一個元素,-1表示最後一個元素,-2表示倒數第二個元素。 $ret=$redis->l

如何取得C++ STL容器的大小? 如何取得C++ STL容器的大小? Jun 05, 2024 pm 06:20 PM

透過使用容器的size()成員函數,可以取得容器中元素的數量。例如,vector容器的size()函數傳回元素數量,list容器的size()函數傳回元素數量,string容器的length()函數傳回字元數量,deque容器的capacity()函數傳回分配的記憶體區塊數量。

如何設計自訂的 STL 函數物件來提高程式碼的可重用性? 如何設計自訂的 STL 函數物件來提高程式碼的可重用性? Apr 25, 2024 pm 02:57 PM

使用STL函數物件可提高可重複使用性,包含下列步驟:定義函數物件介面(建立類別並繼承自std::unary_function或std::binary_function)重載operator()以定義函數行為在重載的operator()中實作所需的功能透過STL演算法(如std::transform)使用函數對象

使用 C++ STL 時如何處理哈希衝突? 使用 C++ STL 時如何處理哈希衝突? Jun 01, 2024 am 11:06 AM

C++STL哈希衝突的處理方式有:鏈結位址法:使用鍊錶儲存衝突元素,適用性佳。開放尋址法:在桶中尋找可用位置儲存元素,子方法有:線性探測:依序找出下一個可用位置。二次探測:以二次方形式跳過位置進行查找。

如何排序C++ STL容器? 如何排序C++ STL容器? Jun 02, 2024 pm 08:22 PM

C++中對STL容器排序的方法:使用sort()函數,原地排序容器,如std::vector。使用有序容器std::set和std::map,元素在插入時自動排序。對於自訂排序順序,可以使用自訂比較器類,例如按字母順序排序字串向量。

如何利用 C++ STL 實作程式碼的可讀性和維護性? 如何利用 C++ STL 實作程式碼的可讀性和維護性? Jun 04, 2024 pm 06:08 PM

透過利用C++標準模板庫(STL),我們可以提升程式碼的可讀性和維護性:1.使用容器取代原始數組,提高類型安全性與記憶體管理;2.利用演算法簡化複雜任務,提高效率;3 .使用迭代器增強遍歷,簡化程式碼;4.使用智慧指標提升記憶體管理,減少記憶體洩漏和懸垂指標。

java中JSONArray互相轉換List怎麼實現 java中JSONArray互相轉換List怎麼實現 May 04, 2023 pm 05:25 PM

1:JSONArray轉ListJSONArray字串轉List//初始化JSONArrayJSONArrayarray=newJSONArray();array.add(0,"a");array.add(1,"b");array.add(2,"c") ;Listlist=JSONObject.parseArray(array.toJSONString(),String.class);System.out.println(list.to

See all articles