c stl的list(雙向鍊錶)

2021-08-10 08:25:44 字數 1600 閱讀 4976

1.list初始化:

(1)listt;  //沒有任何元素

(2)listt(10);  //建立有

10個元素的鍊錶

(3)listt(10,3); //建立有

10個元素的鍊錶,並且每個元素為3

2.對鍊錶進行插入操作:

(1)前插法:在鍊錶頭部插入新元素,鍊錶自動擴張,形式:

t.push_front(8);

(2)尾插法:在鍊錶尾部插入新元素,鍊錶自動擴張,形式:

t.push_back(9);

(3)中間插入:用insert()函式,引數是要插入位置的迭代器,例如:

it=t.begin();

it++;    

//注意鍊錶的迭代器只能進行++或

--操作,而不能進行+n

t.insert(it,20);    

//操作 3.

鍊錶的遍歷:

(1)反向遍歷:形式:

list::reverse_iterator  rit;

for(rit=t.rbegin();rit!=t.rend();rit++)

(2)正向遍歷:形似:

list:iterator  it;

for(it=t.begin();it!=t.end();it++)

4.刪除元素的方法

(1)remove()方法刪除乙個元素,值相同的元素都會被刪除,引數為元素的值,而不是迭代器的位置

,例如:

t.remove(8);

(2)使用

pop_front()

方法刪除鍊錶首元素,例如

: t.pop_front();

(3)使用

pop_back()

方法刪除鍊錶尾元素,例如:

t.pop_back();

(4)使用

erase()

方法刪除迭代器位置上的元素,例如:

it=t.begin();

it++;     

//注意鍊錶的迭代器只能進行++或

--操作,而不能進行+n

it++;    

//操作,但是

for(it=t.begin();it!=t.end();it++)

這個不影響

t.erase(it);  

(5)clear(),清空鍊錶,例如:

t.clear();

(6)size(),求元素的個數,例如:

cout<

(7)find(),在鍊錶中查詢元素,標頭檔案為

#include

若找到,則返回該元素,迭代器的位置,若找不到,則返回

end()

迭代器的位置。查詢的形式為:

list::iterator it;

it=find(t.begin(),t.end(),8);

//這點和其他的不同

,list

的要有查詢區間的

(8)sort()方法對鍊錶進行排序,預設的是公升序排列,形式:

t.sort();

(9)unique()方法可以刪除連續重複的元素,注意是連續重複的元素,

例如是1 2 3 4 1 則不可刪除1。

C STL之雙向鍊錶list

一 list的基本使用以及耗時測試 include include qsort bsearch null includeusing namespace std const int size 100000 int main cout 插入1000000個元素耗時為 clock start endl c...

C STL之list雙向鍊錶容器

不同於採用線性表順序儲存結構的vector和deque容器,list雙向鍊錶中任一位置的元素查詢 插入和刪除,都具有高效的常數階演算法時間複雜度o 1 list技術原理 為了支援前向和反向訪問list容器的元素,list採用雙向迴圈的鍊錶結構組織資料元素,鍊錶的每個節點包括指向前驅的指標 實際資料和...

C STL 10 list 雙向鍊錶

鍊錶 缺點 無法訪問位置 沒有index的概念。陣列可以 index 優點 在序列已知的任何位置插入或刪除元素。可以合併 去重 交換。一樣的增刪改查上 void listtest cout endl int a 5 int b 7 listlst1 a,a 5 listlst2 b,b 7 cout...