一、什么是 list?
list 容器,又稱雙向鏈表容器,即該容器的底層是以雙向鏈表的形式實(shí)現(xiàn)的。這意味著,list 容器中的元素可以分散存儲(chǔ)在內(nèi)存空間里,而不是必須存儲(chǔ)在一整塊連續(xù)的內(nèi)存空間中。跟任意其它類型容器一樣,它能夠存放各種類型的對(duì)象。
二、容器特性
1.線性存儲(chǔ)(非連續(xù))
list是由多個(gè)節(jié)點(diǎn)組成的。
2.雙向鏈表
list 容器具有一些其它容器(array、vector 和 deque)所不具備的優(yōu)勢(shì),即它可以在序列已知的任何位置快速插入或刪除元素(時(shí)間復(fù)雜度為O(1)
)。并且在 list 容器中移動(dòng)元素,也比其它容器的效率高。
3.支持隨機(jī)訪問(wèn)迭代器(下一章介紹)
不支持隨機(jī)訪問(wèn)迭代器,只能從容器中第一個(gè)元素或最后一個(gè)元素開(kāi)始遍歷容器,直到找到該位置。
三、基本函數(shù)實(shí)現(xiàn)
1,構(gòu)造函數(shù)
- list();創(chuàng)建一個(gè)空l(shuí)ist
- list(int nSize);創(chuàng)建一個(gè)list,元素個(gè)數(shù)為nSize
- list(int nSize,const t& t);創(chuàng)建一個(gè)list,元素個(gè)數(shù)為nSize,且值均為t
- list(const list&);復(fù)制構(gòu)造函數(shù)
- list(begin,end);復(fù)制[begin,end)區(qū)間內(nèi)另一個(gè)數(shù)組的元素到list中
2.增加函數(shù)
- void push_back(const T& x); 尾部增加一個(gè)元素X
- void push_front(const T& x); 頭部增加一個(gè)元素X
- iterator insert(iterator it,const T& x);鏈表中迭代器指向元素前增加一個(gè)元素x
- iterator insert(iterator it,int n,const T& x);鏈表中迭代器指向元素前增加n個(gè)相同的元素x
- iterator insert(iterator where,const_iterator first,const_iterator last);鏈表中迭代器指向元素前插入另一個(gè)相同類型鏈表的[first,last)間的數(shù)據(jù)
3.刪除函數(shù)
- iterator erase(iterator it);刪除鏈表中迭代器指向元素
- iterator erase(iterator first,iterator last);刪除鏈表中[first,last)中元素
- void pop_back();刪除鏈表中最后一個(gè)元素
- void pop_front();刪除鏈表中的第一個(gè)元素
- void clear();清空鏈表中所有元素
4.遍歷函數(shù)
- reference front();返回首元素的引用
- reference back();返回尾元素的引用
- iterator begin();返回鏈表頭指針,指向第一個(gè)元素
- iterator end();返回鏈表尾指針,指向鏈表最后一個(gè)元素的下一個(gè)位置
- reverse_iterator rbegin();反向迭代器,指向最后一個(gè)元素
- reverse_iterator rend();反向迭代器,指向第一個(gè)元素之前的位置
5.判斷函數(shù)
- bool empty() const;判斷容器中是否有元素,若無(wú)元素,則返回 true;反之,返回 false。
6.大小函數(shù)
- int size() const;返回鏈表中元素的個(gè)數(shù)
- int max_size() const;返回最大可允許的list元素?cái)?shù)量值
7.其他函數(shù)
- void swap(list&);交換兩個(gè)同類型鏈表的數(shù)據(jù)
- void assign(int count,const T& x); 把鏈表元素設(shè)置為count個(gè),每個(gè)元素都是x
四、基本用法
#include
#include
using namespace std;
int main()
{
list<int> ls;
for (int i = 0; i < 10; i++)
{
ls.push_back(i);
}
for (auto i : ls)
{
cout << i << " ";
}
cout << endl;
while (!ls.empty())//如果鏈表不為空就一直刪除尾部元素
{
cout<
童孩~你又廢了?多多練習(xí)哦,光看是學(xué)不會(huì)的
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3119瀏覽量
75218 -
容器
+關(guān)注
關(guān)注
0文章
509瀏覽量
22440 -
鏈表
+關(guān)注
關(guān)注
0文章
80瀏覽量
10831
發(fā)布評(píng)論請(qǐng)先 登錄
交流電源List波形編輯功能如何使用

c++之list容器

OpenHarmony語(yǔ)言基礎(chǔ)類庫(kù)【@ohos.util.List (線性容器List)】

Allwinner Technology Nand Flash Support List
Allwinner Axx SDRAM Support List
Python基礎(chǔ)變量類型—List分析
list.sort()排序比stream().sorted()排序性能更好嗎?

評(píng)論