日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++ list用法总结

發(fā)布時(shí)間:2024/4/18 c/c++ 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ list用法总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

頭文件

#include<list>

聲明一個(gè)int型的list:list?a;

1、list的構(gòu)造函數(shù)

list<int>a{1,2,3} list<int>a(n) //聲明一個(gè)n個(gè)元素的列表,每個(gè)元素都是0 list<int>a(n, m) //聲明一個(gè)n個(gè)元素的列表,每個(gè)元素都是m list<int>a(first, last) //聲明一個(gè)列表,其元素的初始值來(lái)源于由區(qū)間所指定的序列中的元素,first和last是迭代器

2、begin()和end()
通過(guò)調(diào)用list容器的成員函數(shù)begin()得到一個(gè)指向容器起始位置的iterator,可以調(diào)用list容器的end()函數(shù)來(lái)得到list末端下一位置

?

3、push_back()和push_front()

使用list的成員函數(shù)push_back和push_front插入一個(gè)元素到list中。其中push_back()是從list的末端插入,而push_front()是從list的頭部插入。

?

4、empty()

判斷l(xiāng)ist是否為空

?

5、resize()

調(diào)用resize(n)將list的長(zhǎng)度改為只容納n個(gè)元素,超出的元素將被刪除。如果n比list原來(lái)的長(zhǎng)度長(zhǎng),那么默認(rèn)超出的部分元素置為0。也可以用resize(n, m)的方式將超出的部分賦值為m。

例子:

list<int>b{1, 2, 3, 4}; b.resize(2); list中輸出元素:1,2 list<int>b{1, 2, 3, 4}; b.resize(6); list中輸出元素:1,2,3,4,0,0 list<int>b{1, 2, 3, 4}; b.resize(6,9); list中輸出元素:1,2,3,4,9,9

list的iterator是不支持+(- 數(shù)字)的,所以要得到那樣的迭代器,必須自己編寫。

6、clear()

清空l(shuí)ist中的所有元素

?

7、front()和back()

通過(guò)front()可以獲得list容器中的頭部元素,通過(guò)back()可以獲得list容器的最后一個(gè)元素。注意:當(dāng)list元素為空時(shí),這時(shí)候調(diào)用front()和back()不會(huì)報(bào)錯(cuò)。因此在編寫程序時(shí),最好先調(diào)用empty()函數(shù)判斷l(xiāng)ist是否為空,再調(diào)用front()和back()函數(shù)。

?

8、pop_back()和pop_front()

使用pop_back()可以刪掉尾部第一個(gè)元素,pop_front()可以刪掉頭部第一個(gè)元素。注意:list必須不為空,如果當(dāng)list為空的時(shí)候調(diào)用pop_back()和pop_front()會(huì)使程序崩掉。

?

9、assign()

有兩種使用情況:

(1)a.assign(n, val):將a中的所有元素替換成n個(gè)val元素

例如:

list<int>b{1,2,3,4,5}; b.assign(5,10); b中的元素變?yōu)?0, 10, 10, 10, 10

(2)a.assign(b.begin(), b.end())

list<int>a{6,7,8,9}; list<int>b{1,2,3,4,5}; b.assign(a.begin(),a.end()); b中的元素變?yōu)?,7,8,9```10、swap()交換兩個(gè)鏈表。a.swap(b)和swap(a, b),都可以完成a鏈表和b鏈表的交換。例子: ``` C++ list<int>a{6,7,8,9}; list<int>b{1,2,3,4,5}; swap(a, b); //或a.swap(b)

a中元素變?yōu)?,2,3,4,5
b中元素變?yōu)?,7,8,9

?

11、reverse()

可以實(shí)現(xiàn)list的逆置

例子:

list<int>b{1,2,3,4,5}; reverse(b.begin(),b.end()); b中元素變?yōu)?,4,3,2,1

?

12、merge()

a.merge(b) 調(diào)用結(jié)束后b變?yōu)榭?#xff0c;a中元素包含原來(lái)a和b的元素。

例子:

list<int>a{6,7,8,9}; list<int>b{2, 1, 3, 6, 5}; a.merge(b,greater<int>());

a中元素變?yōu)?#xff1a;6,7,8,9,2,1,3,6,5

list<int>a{6,7,8,9}; list<int>b{2, 1, 3, 6, 5}; a.merge(b); a中元素變?yōu)?#xff1a;2,1,3,6,5,6,7,8,9```13、insert()在指定位置插入一個(gè)或多個(gè)元素 ``` C++ a.insert(a.begin(),100); //在a的開(kāi)始位置(即頭部)插入100 a.insert(a.begin(),2, 100); //在a的開(kāi)始位置插入2個(gè)100 a.insert(a.begin(),b.begin(), b.end());//在a的開(kāi)始位置插入b從開(kāi)始到結(jié)束的所有位置的元素

注意:list的存儲(chǔ)不是連續(xù)存儲(chǔ),所以迭代器不支持和算術(shù)數(shù)字的加減運(yùn)算。所以,需要某個(gè)迭代器,只能不算地執(zhí)行iterator ++或者++ iterator來(lái)獲取所需要的迭代器。

14、erase()
刪除一個(gè)元素或一個(gè)區(qū)域的元素

a.erase(a.begin()); //將a的第一個(gè)元素刪除 a.erase(a.begin(),a.end()); //將a的從begin()到end()之間的元素刪除。

15、remove()函數(shù)

從list中刪除元素

list<int>a{6,7,8,9,7,10}; a.remove(7); 刪除了a中所有值為7的元素,此時(shí)a中元素為6,8,9,10

?

16、remove_if()函數(shù)

括號(hào)中可以傳入

(1)回調(diào)函數(shù)

回調(diào)函數(shù)的原型為boolisRemove(T &obj1);

函數(shù)名任意,如果obj1需要被移除則返回1,否則返回0

使用方法:list.remove_if(isRemove)

這種方法最簡(jiǎn)單,但是無(wú)法向回調(diào)函數(shù)中傳遞參數(shù),每一個(gè)條件就要有一個(gè)回調(diào)函數(shù),因此不推薦使用

(2)創(chuàng)建用于比較的類,傳入類名及初始化參數(shù)

用于比較的類必須重載bool operator()(T &obj1)方法,如果obj1需要被移除則返回1,否則返回0.

用于比較的類還應(yīng)當(dāng)包含必要的構(gòu)造函數(shù),用于傳遞參數(shù)。

使用方法:list.remove_if(classname(args))

例1:

bool is_odd(constint& value){return (value==4); }int main(){list<int> a{6,7,4,9,7,10};a.remove_if(is_odd);list<int>::iterator it = a.begin();while(it != a.end()){cout<<*it<< " ";it++;}return 0; }

輸出:

6 7 9 7 10

?

例2:

class single_digit{ public:bool operator()(const int& value){return (value<10);} };int main(){list<int> a{6,7,4,9,7,10};a.remove_if(single_digit());list<int>::iterator it = a.begin();while(it != a.end()){cout<<*it<<" ";it++;}return 0; }

輸出:

10

總結(jié)

以上是生活随笔為你收集整理的C++ list用法总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。