亚洲 国产精品 日韩-亚洲 激情-亚洲 欧美 91-亚洲 欧美 成人日韩-青青青草视频在线观看-青青青草影院

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  應聘面試  >  物聯網面試題  > STL教程(二):C++ STL必備知識

STL教程(二):C++ STL必備知識

來源:千鋒教育
發布人:syq
時間: 2022-07-11 16:51:00 1657529460

  STL作為C++標準的重要一部分,在很大程序上改變了C++程序的結構與使用方式,STL大大提高了軟件開發的效率,降低了開發成本成維護成本,降低了開發時間與維護時間,提高了軟件穩定性與可移植性,隨著軟件行業的迅速發展, STL在C++程序中得到了廣泛的應用。

  上一篇內容介紹了STL提供了六大組件,彼此之間可以組合套用,這六大組件分別是:容器、算法、迭代器、仿函數、適配器(配接器)、空間配置器。我們將詳細介紹其中三個,為接下來的學習打好基礎。

  一、容器

  容器,置物之所也。 研究數據的特定排列方式,以利于搜索或排序或其他特殊目的,這一門學科我們稱為數據結構。大學信息類相關專業里面,與編程最有直接關系的學科,首推數據結構與算法。幾乎可以說,任何特定的數據結構都是為了實現某種特定的算法。STL容器就是將運用最廣泛的一些數據結構實現出來。 常用的數據結構:數組(array),鏈表(list),tree(樹),棧(stack),隊列(queue),集合(set),映射表(map),根據數據在容器中的排列特性,這些數據分為序列式容器和關聯式容器兩種。 序列式容器強調值的排序,序列式容器中的每個元素均有固定的位置,除非用刪除或插入的操作改變這個位置。Vector容器、Deque容器、List容器等。 關聯式容器是非線性的樹結構,更準確的說是二叉樹結構。各元素之間沒有嚴格的物理上的順序關系,也就是說元素在容器中并沒有保存元素置入容器時的邏輯順序。關聯式容器另一個顯著特點是:在值中選擇一個值作為關鍵字key,這個關鍵字對值起到索引的作用,方便查找。

  總結:針對于STL通用的容器分為三類:順序性容器、關聯式容器和容器適配器。

  順序性容器是一種各元素之間有順序關系的線性表,除非用插入、刪除的操作改變位置,否則元素在容器中的位置與元素本身沒有關系,只與操作的時間和地點相關(時間:什么時候添加的元素,地點:元素添加到了那個位置);常用的順序性容器有:vector、deque、list。

  關聯式容器是采用非線性的樹結構來存儲數據,樹形結構的底層采用的是平衡二叉搜索樹:RB-Tree(紅黑樹),哈希結構底層實現為哈希表,容器內的各元素沒有嚴格意義上的物理內存上的順序關系。此外,關聯式容器是采用key-value形式,在樹形結構中保存key值,然后通過哈希表訪問其value值,而順序性容器只能保存一種類型的值。常用的關聯式容器有:set和multiset、map和multimap。

  容器適配器其實就是將已有的容器結構類型,改變一下接口,使其實現特有的功能,比如stack容器,其實就是deque容器改變接口實現的,你也可以使用deque容器當做stack容器使用,但是deque容器接口過多,為了避免誤操作,破壞了stack容器的性質,就使用容器適配器。常用的關聯式容器有:stack,queue和priority_queue。stack和queue默認是基于deque實現,priority_queue默認是基于vector實現。

  最后容器可以嵌套容器,如下圖所示。

2

  二、算法

  算法,問題之解法也。以有限的步驟,解決邏輯或數學上的問題,這一門學科我們叫做算法(Algorithms).廣義而言,我們所編寫的每個程序都是一個算法,其中的每個函數也都是一個算法,畢竟它們都是用來解決或大或小的邏輯問題或數學問題。STL收錄的算法經過了數學上的效能分析與證明,是極具復用價值的,包括常用的排序,查找等等。特定的算法往往搭配特定的數據結構,算法與數據結構相輔相成。

  算法分為:質變算法和非質變算法。

  質變算法:是指運算過程中會更改區間內的元素的內容。例如拷貝,替換,刪除等等 非質變算法:是指運算過程中不會更改區間內的元素內容,例如查找、計數、遍歷、尋找極值等等

  總結:針對于STL常用的算法有:查找算法、排序和通用算法、刪除和替換算法、排列組合算法、數值算法、生成和異變算法、關系算法、集合算法、堆算法等。(具體的算法將在接下來章節中介紹)

  三、迭代器

  迭代器(iterator)是一種抽象的設計概念,現實程序語言中并沒有直接對應于這個概念的實物。在對市面上23種設計模式的完整描述中,其中iterator模式定義如下:提供一種方法,使之能夠依序尋訪某個容器所含的各個元素,而又無需暴露該容器的內部表示方式。

  迭代器的設計思維-STL的關鍵所在,STL的中心思想在于將容器(container)和算法(algorithms)分開,彼此獨立設計,最后再一貼膠著劑將他們撮合在一起。從技術角度來看,容器和算法的泛型化并不困難,c++的class template和function template可分別達到目標,如果設計出兩這個之間的良好的膠著劑,才是大難題。

  迭代器的種類:

3

  使用案例:

#include<iostream> #include<vector> #include<algorithm> using namespace std; //STL 中的容器 算法 迭代器 void test01(){ 

vector<int> v; //STL 中的標準容器之一 :動態數組

v.push_back(1); //vector 容器提供的插入數據的方法

v.push_back(3); 

v.push_back(7); //迭代器

vector<int>::iterator pStart = v.begin(); //vector 容器提供了 begin()方法 返回 指向第一個元素的迭代器

vector<int>::iterator pEnd = v.end(); //vector 容器提供了 end()方法 返回指向最后 一個元素下一個位置的迭代器 //通過迭代器遍歷

while (pStart != pEnd){ 

cout << *pStart << " "; 

pStart++; }

cout << endl; }//STL 容器不單單可以存儲基礎數據類型,也可以存儲類對象 class Teacher {

public: 

Teacher(int age) :age(age){};

 ~Teacher(){}; 

public: 

int age; };void test02(){ 

vector<Teacher> v; //存儲 Teacher 類型數據的容器

Teacher t1(10), t2(20), t3(30); 

v.push_back(t1); 

v.push_back(t2); 

v.push_back(t3); 

vector<Teacher>::iterator pStart = v.begin(); 

vector<Teacher>::iterator pEnd = v.end(); //通過迭代器遍歷

while (pStart != pEnd)

cout << pStart->age << " "; 

pStart++; 

}

cout << endl; }//存儲 Teacher 類型指針 void test03(){ 

vector<Teacher*> v; //存儲 Teacher 類型指針

Teacher* t1 = new Teacher(10); 

Teacher* t2 = new Teacher(20); 

Teacher* t3 = new Teacher(30); 

v.push_back(t1); 

v.push_back(t2); 

v.push_back(t3); //拿到容器迭代器

vector<Teacher*>::iterator pStart = v.begin(); 

vector<Teacher*>::iterator pEnd = v.end(); 

//通過迭代器遍歷

while (pStart != pEnd)

cout << (*pStart)->age << " "; 

pStart++; 

}

cout << endl; 

 }

 //容器嵌套容器 難點(不理解,可以跳過)

 void test04() 

 { 

 vector< vector<int> > v; 

 vector<int>v1; 

 vector<int>v2; 

 vector<int>v3; 

 for (int i = 0; i < 5;i++) 

 { 

 v1.push_back(i); 

 v2.push_back(i * 10); 

 v3.push_back(i * 100); 

 }

 v.push_back(v1); 

 v.push_back(v2); 

 v.push_back(v3);

 for (vector< vector<int> >::iterator it = v.begin(); it != v.end();it++) 

 { 

 for (vector<int>::iterator subIt = (*it).begin(); subIt != (*it).end(); subIt ++)

 { 

cout << *subIt << " "; 

 }

 cout << endl; 

 } 

 }

 int main()

 { 

 //test01();

 //test02();

 //test03();

 test04(); 

 system("pause"); 

 return EXIT_SUCCESS; 

 }

  更多關于“物聯網培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
成人无码区免费A∨视频| 哪种女人弄进去最舒服| 久久综合九色综合欧洲98| 欧美成在线精品视频| 色妞WWW精品视频| 亚洲AV无码二区一区二十六区| 亚洲综合欧美色五月俺也去| AV无码久久久久久不卡网站| 久久久久久亚洲精品不卡| 蜜桃亚洲AV无码一区二区三区| 欧美日韩不卡高清在线看| 四虎精品成人免费视频| 亚洲免费成人av| CAOPOREN免费精品视频| 国产精品久久久久精品香蕉爆乳 | 波多野结衣迅雷种子| 国产伦精品一区二区三区免费| 久久久久久久精品裸体艺术| 日本牲交大片免费观看| 亚洲国产精品18久久久久久| √最新版天堂资源网在线下载| 错位关系C1V1一块五花肉| 精品国产AⅤ一区二区三区V免费 | 粉嫩被粗大进进出出视频| 饥渴人妻被快递员玩弄的视频 | 天堂√中文在线BT| 野花日本HD免费高清版视频| 按摩师用嘴亲我下面过程| 好大好深好猛好爽视频| 欧美最猛性XXXXX(亚洲精品)| 小雪尝禁果又粗又大的中国地图| 中文字幕精品第一区二区三区| 丰满人妻AV无码一区二区三区| 久久国产精品久久精品国产| 日韩成人精品久久网站| 亚洲另类精品无码专区| 陈冠希实干阿娇13分钟| 精品人妻码一区二区三区| 变态拳头交视频一区二区| 国产乱码精品一区三上| 久久久久亚洲AV综合仓井空| 色先锋AV资源中文字幕| 影音先锋2020色资源网| 国产成人人综合亚洲欧美丁香花| 鲁一鲁一鲁一鲁一澡| 无码人妻一区二区三区密桃手机版| 中国成熟IPHONE| 国产精品VA在线观看无码不卡 | 婬乱丰满熟妇XXXXX性69| 国产VIDEOSSEX精品| 免费观看电视在线高清 | 人人妻人人爽人人做夜欢视频九色| 压在窗户上C给别人看窗前| AAAAA级大公开超高准确率| 激情欧美成人久久综合| 色婷婷六月亚洲综合香蕉 | 亚洲成AV人在线视| 成人午夜亚洲精品无码区| 麻豆一二三四区乱码| 亚洲AV成人无码网站大全| 成人片黄网站色多多WWW| 老男人吃奶疯狂啃肿奶头| 亚洲 欧美 中文 日韩AⅤ手机| 八戒八戒手机在线高清观看WWW| 久久国产欧美成人网站| 无码人妻丝袜视频在线播免费 | 人C交Z〇○Z〇○ⅩⅩ| 亚洲综合色在线观看一区二区| 国产精品色视频ⅩXXX| 秋霞鲁丝片成人无码| 一二三四影视在线看片免费| 国产自偷在线拍精品热| 少妇爆乳无码专区| CHINESE FREE 高清| 久久无码无码久久综合综合 | 日韩无人区码卡二卡3卡2022| 中文精品久久久久人妻不卡| 禁欲少校大哥的囚禁| 挺进邻居人妻雪白的身体| 宝宝湿透了还嘴硬怎么回事| 男女体裸下00动态视频| 亚洲一区二区三区日本久久九 | 五月丁香综合缴情六月小说| 村长你的机巴太粗太长了| 欧美人与禽XOXO牲伦交| 又黄又无遮挡AAAAA毛片| 极品婬荡少妇XXXX欧美| 羞羞午夜爽爽爽爱爱爱爱人人人| 隔壁人妻被水电工征服| 日本熟妇XXXX| А√在线中文网新版地址在线 | 天美传媒蜜桃传媒精东豆| A区B区C区D区乱码| 男吃奶玩乳尖高潮视频午夜| 伊人久久大香线蕉AV仙人| 久久国产欧美日韩精品| 亚洲VA久久久噜噜噜久久狠狠| 国产成人综合一区人人| 色欲香天天天综合网站无码| 成人网站在线观看丰满少妇电影| 欧美专区日韩视频人妻| 99精产国品一二三产区区别电影| 美国ZOOM人与ZOOM| 中年人妻丰满AV无码久久不卡| 久久久噜噜噜久久久精品| 亚洲男人AV香蕉爽爽爽爽| 国产专区一线二线三线品牌东| 亚洲 丝袜 另类 校园 欧美| 国产免费观看久久黄AV片| 午夜三级A三级三点窝| 国产成人剧情AV麻豆果冻| 熟女无套高潮内谢吼叫免费| 夫妇交换性三中文字幕| 熟妇的荡欲乱色欲av浪潮| 国产AV无码专区亚洲AⅤ| 四虎精品成人免费视频| 国产盗摄XXXX视频XXXX| 铜铜铜铜铜铜铜铜好痛好深色板| 国产AV无码区亚洲AV欧美| 为了升职丈夫把我献给他们领导 | 亚洲AV成人无码一区在线观看 | 亚洲色偷偷偷网站色偷一区人人藻 | 日韩久久一区二区三区蜜桃| 菲律宾一大学发生爆炸| 久久国产乱子伦免费精品无码| 亚洲精品国产成人AV蜜臀| 精品久久久无码人妻字幂| 亚洲熟妇无码八AV在线播放| 久久天天躁狠狠躁夜夜AV不卡 | 免费观看高清日本AⅤ| 综合精品欧美日韩国产在线| 女色窝人体色777777九色| JAPANESE老熟妇乱子伦视| 人人玩人人添人人澡东莞| 大波妺AV网站影院| 凸凹人妻人人澡人人添| 国产午夜亚洲精品不卡| 亚洲欧美丝袜 动漫专区| 久久午夜无码鲁丝片秋霞| 18禁强伦姧人妻又大又粗| 人妻被按摩师玩弄到潮喷| 非洲黄网站黑人美女日比群交视频| 我的私人女教师3| 国内精品久久久久影院日本 | 性欧美丰满熟妇XXXX性久久久| 黑色丝袜老师自慰喷水浪潮免费 | 波多野结衣放荡的护士| 熟妇啊轻点灬大JI巴太粗| 国模无码视频一区二区三区| 亚洲中国最大AV网站| 女性高爱潮AAAA级视频免费| 宝贝把腿开大让我添添电影 | 国产福利精品一区二区| 亚洲AV综合色区无码二区偷拍| 久久久久亚洲国产AV麻豆| AV一本久道久久波多野结衣| 少妇白浆高潮无码免费区| 国产尤物亚洲精品不卡| 野花社区WWW高清图片| 欧美性爱AAAAA| 国产韩国精品一区二区三区| 亚洲精品无码久久久久AV老牛| 免费国产VA在线观看中文字| 成人午夜福利视频后入| 亚洲AV自慰白浆喷水少妇| 蜜臀AV性久久久久蜜臀AⅤ麻豆| 被两个老头咬住吃奶野战| 我和丰满女教练在线观看| 久久AV无码专区亚洲AV桃花岛| BGMBGMBGM毛多多视频1| 无码办公室丝袜OL中文字幕| 久久精品国产99国产精品澳门| JAPAN色系VIDEOS护士| 无码中文亚洲AV影音先锋无码| 久久大香伊蕉在人线国产H| JUX900被公每天侵犯的我| 五月综合网亚洲乱妇久久 | 中国BGMBGMBGM老妇网站| 日韩成人无码AV| 精品久久久久久久无码| JAPANESE极品少妇| 亚洲AⅤ无码天堂在线观看| 免费A级毛片无码A∨中文字幕| 国99久9在线 | 免费| 亚洲制服无码一区二区三区| 日韩AV无码一区二区三区不卡毛| 国精产品一品二品国精| 99精品热这里只有精品| 五月丁香合缴情在线看| 男女啪啪真实无遮挡免费| 国产风流老太婆大BBBHD视频| 伊伊人成亚洲综合人网香| 熟妇人妻不卡无码一区| 久久综合九色综合欧美狠狠| 国产成人麻豆精品午夜福利在线 | 老师露双奶头无遮挡挤奶视频| 丰满人妻熟妇乱又伦精品| 永久黄网站色视频免费观看APP| 少妇伦子伦精品无吗| 老妇饥渴XXHDⅩXXOOO|