亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++ STL入門教程(2) list雙向鏈表使用方法(附程序代碼)

2020-01-26 13:57:30
字體:
來源:轉載
供稿:網友

一、簡介

“Unlike other standard sequence containers, list and forward_list objects are specifically designed to be efficient inserting and removing elements in any position, even in the middle of the sequence.”

Lists將元素按順序儲存在鏈表中。與向量(vector)相比, 它允許快速的插入和刪除,但是隨機訪問卻比較慢。(vector支持快速隨機訪問)

前一篇就提到過,list可以在頭部進行添加刪除操作,但vector不行。

下面是幾個list特有的函數。(從另一方面說明list在刪除操作方面的速度之快)

remove() 從list刪除元素
remove_if() 按指定條件刪除元素
reverse() 把list的元素倒轉
sort() 給list排序
unique() 刪除list中重復的元素

二、完整程序代碼

/*請務必運行以下程序后對照閱讀*/  #include <list> #include <iostream> #include <algorithm> using namespace std;  void print(int num) {  cout << num << " "; }  bool IsOdd(int i) {  return ((i & 1) == 1); }  int main() {  //1. 初始化  list<int> v;  list<int>::iterator iv;   v.assign(10, 2);//將10個值為2的元素賦到list中  cout << v.size() << endl; //返回list實際含有的元素數量  cout << endl;   //2. 添加  v.push_front(666);  for (int i = 0; i < 10; i++)   v.push_back(i);  for_each(v.begin(), v.end(), print);//需要#include <algorithm>  cout << endl;  cout << v.size() << endl;  cout << endl;   //3. 插入及遍歷、逆遍歷和倒轉  v.insert(v.begin() , 99);//不能+和-了  v.insert(v.end() , 99);   for_each(v.begin(), v.end(), print);  cout << endl;  for_each(v.rbegin(), v.rend(), print);//在逆序迭代器上做++運算將指向容器中的前一個元素  cout << endl;   //一般遍歷寫法  for(iv = v.begin(); iv != v.end(); ++iv)   cout << *iv << " ";  cout << endl;   v.reverse();  for_each(v.begin(), v.end(), print);  cout << endl;  for_each(v.rbegin(), v.rend(), print);  cout << endl;  cout << endl;   //4. 排序  v.sort();//為鏈表排序,默認是升序。  for_each(v.begin(), v.end(), print);  cout << endl;  cout << endl;   //5. 刪除  v.erase(v.begin());  for_each(v.begin(), v.end(), print);  cout << endl;  v.insert(v.begin() , 99);//還原   //刪掉鏈表中所有重復的元素  v.unique();  for_each(v.begin(), v.end(), print);  cout << endl;   //去掉所有含2的元素  v.remove(2);  for_each(v.begin(), v.end(), print);  cout << endl;   //刪掉所有奇數  v.remove_if(IsOdd);  for_each(v.begin(), v.end(), print);  cout << endl;   v.pop_front();  v.pop_back();  for_each(v.begin(), v.end(), print);  cout << endl;  cout << endl;   //6. 查詢  cout << v.front() << endl;  cout << v.back() << endl;   //7. 清空  v.clear();  cout << v.size() << endl;//0  for_each(v.begin(), v.end(), print); //已經clear,v.begin()==v.end(),不會有任何結果。   return 0; } 

當然,我們也可以用動態數組作為保存的數據類型:

#include<iostream> #include<string> #include<list> using namespace std;  int main() {  list<char *> li;  list<char *>::iterator iter;  li.push_back("123");  li.push_back("456");  li.push_back("789");  for (iter = li.begin(); iter != li.end(); ++iter)   cout << *iter << endl;  return 0; } 

三、補充

對比vector和list在查詢(隨機檢索)和維護(插入和刪除)上的區別:

a) 查詢

vector:由于vector中的元素是連續存儲的,所以我們能夠直接的訪問第n個元素。

list:由于list中的元素不是在內存中連續存儲的,下一個元素的內存地址保存在前一個元素中,所以我們必須一個一個的訪問前面的元素,最后才能訪問第n個元素。

當然,對于順序訪問就二者就差不多了。

b) 維護

vector:在vector中插入/刪除一個元素的話,我們需要移動插入/刪除位置之后的所有元素。如果在vector插入/刪除元素后有大量元素的情況下,顯而易見,這些移動和刪除操作會大量的消耗CPU時間。

list:使用list進行這些操作的時候,其僅僅是修改插入/刪除元素之前的元素到后一個元素的指針則可以完成這些操作,這樣可以節約大量的CPU時間。

參考網站:http://www.cplusplus.com/reference/list/list/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品啪在线观看麻豆免费| 国产日产欧美精品| 日韩a**站在线观看| 米奇精品一区二区三区在线观看| 亚洲国产一区二区三区四区| 亚洲成人黄色在线| 亚洲欧美激情四射在线日| 亚洲91精品在线观看| 91亚洲国产成人精品性色| 精品视频—区二区三区免费| 日韩精品中文字幕在线| 欧美成人自拍视频| 永久免费看mv网站入口亚洲| 国产精品黄色av| 日韩av电影免费观看高清| 国产欧美日韩丝袜精品一区| 国产成人一区二区在线| 成人福利视频在线观看| 51精品国产黑色丝袜高跟鞋| 91黑丝在线观看| 4k岛国日韩精品**专区| 久久久久久久久网站| 亚洲最大激情中文字幕| 欧美高清在线观看| 日本高清+成人网在线观看| 亚洲福利在线播放| 久久久久在线观看| 高清一区二区三区日本久| 18一19gay欧美视频网站| 在线精品播放av| 亚洲人成自拍网站| 中文字幕日韩综合av| 欧美成人激情视频免费观看| 国内精品国产三级国产在线专| 中文字幕久热精品在线视频| 亚洲香蕉av在线一区二区三区| 国产精品激情av在线播放| 精品久久久在线观看| 欧美精品videosex牲欧美| 最新的欧美黄色| 精品欧美国产一区二区三区| 国产精品va在线| 国产精品视频精品| 亚洲精品久久视频| 成人免费午夜电影| 久久久之久亚州精品露出| 国产精品普通话| 欧美电影免费观看高清完整| 欧美一级片久久久久久久| 欧美韩国理论所午夜片917电影| 菠萝蜜影院一区二区免费| 精品自在线视频| 欧美日韩在线视频首页| 国产精品久久久av| 国产专区欧美专区| 日韩电影免费观看在线观看| 97色在线播放视频| 国产精品国产三级国产专播精品人| 亚洲综合中文字幕在线观看| 国产成人久久久精品一区| 国产伦精品一区二区三区精品视频| 777午夜精品福利在线观看| 欧美成人一区二区三区电影| 亚洲国产成人精品久久| 久久久久久国产精品美女| 亚洲国产一区二区三区四区| 久久伊人免费视频| 91免费人成网站在线观看18| 色综合天天综合网国产成人网| 国产91免费观看| 久久免费视频这里只有精品| 精品露脸国产偷人在视频| 国产视频丨精品|在线观看| 国产91在线播放九色快色| 国内揄拍国内精品少妇国语| 久久99精品国产99久久6尤物| 日本精品在线视频| 久久综合免费视频影院| 57pao国产成人免费| 中文字幕亚洲在线| 精品一区二区电影| 97免费视频在线| 亚洲男人的天堂在线播放| 日韩欧美极品在线观看| 久久久久久网址| 欧美久久精品一级黑人c片| 91青草视频久久| 欧美性xxxx在线播放| 日韩精品高清视频| 一个色综合导航| 成人黄色午夜影院| 亚洲最大在线视频| 久久精品99无色码中文字幕| 国产欧美亚洲精品| 91精品国产综合久久香蕉的用户体验| 国产精品久久久久久搜索| 欧美极品少妇xxxxⅹ裸体艺术| 91在线免费观看网站| 国产91精品久久久久| 久久在线精品视频| 国产人妖伪娘一区91| 欧美激情第6页| 搡老女人一区二区三区视频tv| 国产精品免费视频久久久| 久久精品电影网| 精品在线观看国产| 国产精品99久久99久久久二8| 欧美色视频日本高清在线观看| 久久久久久久久久久久久久久久久久av| 久久久久女教师免费一区| 久久成年人免费电影| 国产精品亚洲网站| 亚洲国产日韩欧美在线动漫| 欧美激情第1页| 日韩专区中文字幕| 久久久久久91香蕉国产| 亚洲精品91美女久久久久久久| 国产精品成人国产乱一区| 国产视频一区在线| 欧美成人合集magnet| 91成人精品网站| 中文字幕欧美国内| 久久久国产精品免费| 亚洲成人av片| y97精品国产97久久久久久| 亚洲精品91美女久久久久久久| 国产精品男人的天堂| 91免费看片网站| 久久久成人的性感天堂| 国内免费精品永久在线视频| 日韩av一区在线观看| 欧美日韩国产一区二区三区| 精品自拍视频在线观看| 国产激情999| 亚洲欧洲激情在线| 精品视频—区二区三区免费| 国产精品男人爽免费视频1| 中文一区二区视频| 78色国产精品| 欧美激情在线狂野欧美精品| 久久久精品久久久| 国产999视频| 日韩av在线播放资源| 国产区亚洲区欧美区| 国产一区二区三区直播精品电影| 国产午夜精品视频| 国产主播精品在线| 国产精品久久久久99| 97超碰国产精品女人人人爽| 亚洲精品一区中文字幕乱码| 最近2019免费中文字幕视频三| 欧美美最猛性xxxxxx| 久久久久九九九九| 国产99在线|中文| 亚洲欧美国内爽妇网| 91wwwcom在线观看| 国产精品女主播| 欧美多人乱p欧美4p久久| 日本欧美在线视频| 国产成人精品一区二区三区| 日韩av中文字幕在线| 欧美日韩一区免费| 欧美老女人bb| 国产精品高潮粉嫩av|