list容器

2022-09-23 05:57:05 字數 2283 閱讀 1494

功能:將資料進行鏈式儲存

連結串列是一種物理儲存單元上非連續的儲存結構,資料元素的邏輯順序是通過連結串列中的指標連線實現的

連結串列的組成:連結串列有一系列結點組成

stl中的連結串列是一個雙向迴圈連結串列

相對於陣列的優缺點:

優點:可以對任意位置進行快速插入或刪除

缺點:遍歷資料較慢,佔用空間較大

由於連結串列的儲存方式並不是連續的儲存空間,因此連結串列list中的迭代器只支援前移和後移,屬於雙向迭代器

list的優點:

-採用動態儲存分配,不會造成記憶體浪費和溢位

-連結串列執行輸入和刪除操作十分方便,修改指標即可,不需要大量移動資料

list的缺點:

-連結串列靈活,但是空間(指標域)和時間(遍歷)額外耗費較大

list有一個重要的性質,插入操作和刪除操作都不會造成原有的list迭代器的失效,這在vector中是不成立的

總結:stl中list和vector是兩個最常被使用的容器,各有優缺點

list建構函式:

-listlst;

-list(beg,end);

-list(const list& lst);

-list(n,elem);

list賦值與交換:

-assign(beg,end);

-assign(n,elem);

-list& operator=(const list& lst);

swap(lst);

list大小操作:

-size();

-empty();

-resize(int num);

-resize(int num,elem);

list插入與刪除:

-push_back(elem);

-pop_back();

-push_front(elem);

-pop_front();

-insert(pos,elem);         //在位置pos插入elem元素的拷貝,返回新資料的位置*

-insert(pos,n,elem);      //在pos位置上插入n個elem資料,無返回值

-insert(pos,beg,end);    //在pos位置插入[beg,end]區間的資料,無返回值

-clear();                         //清空

-erase(beg,end);          //刪除[beg,end]區間的元素,返回下一個資料的位置*   

-erase(pos);              //刪除pos位置的資料,返回下一個資料的位置*

-remove(elem);            //刪除容器中所有與elem值匹配的元素*

1 #include 2 #include 3

using

namespace

std;

4void print(listlst)

510 cout <12int

main()

1319

print(lst);

20 lst.insert(lst.begin(), 100

);21

print(lst);

22 lst.insert(lst.end(), 3, 100

);23

print(lst);

24lst.erase(lst.begin());

25print(lst);

26 lst.remove(100

);27

print(lst);

2829

return0;

30 }

list資料存取:

-front();                          //返回第一個元素

-back();                          //返回最後一個元素

//注意沒有at()和過載是因為list不支援隨機訪問

list反轉與排序:

-reverse();

-sort();//注意是自帶的sort,而不是全域性的

1 #include 2 #include 3 #include 4

using

namespace

std;

5void print(listlst)

611 cout <13bool comp(int v1, int

v2)14

18int

main()

19

STL 容器(List)List 的概念

1 list 是一個雙向連結串列容器,可高效的進行插入刪除元素,他的原理在於每個元素都有兩個指標來記錄前後兩個元素的地址,像火車車廂一樣,list 中各個元素在物理儲存單元上非連續,是通過指標相連在一起的。 2 相較於vector的連續線性空間,list會顯得複雜許多,他的好處是每次插入或者刪除1個元素...

STL 容器(List)list 的大小操作

返回容器中元素的個數 1 include 2 include 3 4using namespace std 56 intmain 7 9 list listint a num num size num 1011 cout 容器中的元素數量為 listint a size 1213 return0 1...

List雙向連結串列容器

list雙向連結串列中任意位置的元素查詢, 插入和刪除都具有高效的常數階演算法時間複雜度o 1 include include includ...