網(wǎng)頁(yè)設(shè)計(jì)師證書查詢官網(wǎng)google seo怎么優(yōu)化
前言
大家好吖,歡迎來(lái)到 YY 滴C++系列 ,熱烈歡迎! 本章主要內(nèi)容面向接觸過(guò)C++的老鐵
主要內(nèi)容含:
歡迎訂閱 YY滴C++專欄!更多干貨持續(xù)更新!以下是傳送門!
目錄
- 一、list 類——基本介紹
- 二、list 類——使用環(huán)境準(zhǔn)備
- 三、list 構(gòu)造&初始化
- [1] list 構(gòu)造&初始化的代碼演示
- [2] list iterator的使用
- 四、list 的訪問(wèn)及遍歷操作
- 五、list 增刪查改
- 1.list 增刪查改操作盤點(diǎn)
- 2.list 增刪查改代碼演示
- 六、list 空間相關(guān)函數(shù)
- list 空間相關(guān)函數(shù)代碼演示
一、list 類——基本介紹
- list是可以在常數(shù)范圍內(nèi)在任意位置進(jìn)行插入和刪除的序列式容器,并且該容器可以前后雙向迭代。
- list的底層是雙向鏈表結(jié)構(gòu),雙向鏈表中每個(gè)元素存儲(chǔ)在互不相關(guān)的獨(dú)立節(jié)點(diǎn)中,在節(jié)點(diǎn)中通過(guò)指針指向
其前一個(gè)元素和后一個(gè)元素。- list與forward_list非常相似:最主要的不同在于forward_list是單鏈表,只能朝前迭代,已讓其更簡(jiǎn)單高
效。- 與其他的序列式容器相比(array,vector,deque),list通常在任意位置進(jìn)行插入、移除元素的執(zhí)行效率更好。
- 與其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的隨機(jī)訪問(wèn),比如: 要訪問(wèn)list
的第6個(gè)元素,必須從已知的位置(比如頭部或者尾部)迭代到該位置,在這段位置上迭代需要線性的時(shí)間
開銷;list還需要一些額外的空間,以保存每個(gè)節(jié)點(diǎn)的相關(guān)聯(lián)信息(對(duì)于存儲(chǔ)類型較小元素的大list來(lái)說(shuō)這
可能是一個(gè)重要的因素)
二、list 類——使用環(huán)境準(zhǔn)備
- 在使用string類時(shí),必須包含
#include<list> #include<iostream>
以及 展開命名空間using namespace std;- 查看所有接口網(wǎng)站:https://cplusplus.com
三、list 構(gòu)造&初始化
構(gòu)造函數(shù)聲明 | 功能說(shuō)明 |
---|---|
list (size_type n, const value_type& val = value_type()) | 構(gòu)造的list中包含n個(gè)值為val的元素 |
list() (缺省) | 構(gòu)造空的list |
list (const list& x) | 拷貝構(gòu)造函數(shù) |
list (InputIterator first, InputIterator last) | 用 [first, last) 區(qū)間中的元素構(gòu)造list |
[1] list 構(gòu)造&初始化的代碼演示
[2] list iterator的使用
- 此處,大家可暫時(shí)將迭代器理解成一個(gè)指針,該指針指向list中的某個(gè)節(jié)點(diǎn)
【注意點(diǎn)】
- begin與end為正向迭代器,對(duì)迭代器執(zhí)行++操作,迭代器向后移動(dòng)
- rbegin(end)與rend(begin)為反向迭代器,對(duì)迭代器執(zhí)行++操作,迭代器向前移動(dòng)
構(gòu)造函數(shù)聲明 | 功能說(shuō)明 |
---|---|
begin +end | 返回第一個(gè)元素的迭代器+返回最后一個(gè)元素下一個(gè)位置的迭代器 |
rbegin +rend | 返回第一個(gè)元素的reverse_iterator,即end位置,返回最后一個(gè)元素下一個(gè)位置的reverse_iterator,即begin位置 |
四、list 的訪問(wèn)及遍歷操作
已合并到【探究 [ 迭代器 ] 種類&在STL中的使用方式】一文中,傳送門如下:
額
五、list 增刪查改
1.list 增刪查改操作盤點(diǎn)
構(gòu)造函數(shù)聲明 | 功能說(shuō)明 |
---|---|
push_front | 返回list的第一個(gè)節(jié)點(diǎn)中值的引用 |
front | 返回list的最后一個(gè)節(jié)點(diǎn)中值的引用 |
back | 在list首元素前插入值為val的元素 |
push_front | 刪除list中第一個(gè)元素 |
pop_front | 在list尾部插入值為val的元素 |
pop_back | 刪除list中最后一個(gè)元素 |
insert | 在list position 位置中插入值為val的元素 |
erase | 刪除list position位置的元素 |
swap | 交換兩個(gè)list中的元素 |
clear | 清空l(shuí)ist中的有效元素 |
2.list 增刪查改代碼演示
list<int> lt; //注意哨兵位的頭節(jié)點(diǎn)
lt.push_back(1);
lt.push_back(2);
lt.push_back(3);
lt.push_back(4);lt.push_front(10);
lt.push_front(20);//打印驗(yàn)證
/*for (auto e : lt)
{cout << e << " ";
}
cout << endl;*/// 要實(shí)現(xiàn):第5個(gè)位置插入數(shù)據(jù)
//v.insert(v.begin()+5, 10);
auto it = lt.begin();
for (size_t i = 0; i < 5; i++)
{++it;
}
lt.insert(it, 100);for (auto e : lt)
{cout << e << " ";
}
cout << endl;
六、list 空間相關(guān)函數(shù)
構(gòu)造函數(shù)聲明 | 功能說(shuō)明 |
---|---|
empty | 檢測(cè)list是否為空,是返回true,否則返回false |
size | 返回list中有效節(jié)點(diǎn)的個(gè)數(shù) |
list 空間相關(guān)函數(shù)代碼演示
list<int> lt;
if(empty(lt)!=NULL);
return size(lt);