黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

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

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

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

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

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

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

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

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

  一、容器

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

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

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

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

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

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

2

  二、算法

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

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

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

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

  三、迭代器

  迭代器(iterator)是一種抽象的設計概念,現(xiàn)實程序語言中并沒有直接對應于這個概念的實物。在對市面上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 中的標準容器之一 :動態(tài)數(shù)組

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

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 容器不單單可以存儲基礎數(shù)據(jù)類型,也可以存儲類對象 class Teacher {

public: 

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

 ~Teacher(){}; 

public: 

int age; };void test02(){ 

vector<Teacher> v; //存儲 Teacher 類型數(shù)據(jù)的容器

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; 

 }

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

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師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
物聯(lián)網(wǎng)公司面試題:保障物聯(lián)網(wǎng)安全的措施有哪些?

題目:請談談您對物聯(lián)網(wǎng)安全的理解,以及在物聯(lián)網(wǎng)系統(tǒng)中保障安全性的措施。回答:物聯(lián)網(wǎng)安全是指在物聯(lián)網(wǎng)系統(tǒng)中保護設備、數(shù)據(jù)和通信免受未經(jīng)授...詳情>>

2023-07-26 11:59:27
物聯(lián)網(wǎng)中的邊緣計算是什么?請解釋其優(yōu)勢和應用場景

答案:邊緣計算是一種將計算和數(shù)據(jù)處理能力移動到物聯(lián)網(wǎng)設備附近的計算模型。在邊緣計算中,數(shù)據(jù)的處理和分析發(fā)生在接近數(shù)據(jù)源的設備或邊緣節(jié)點...詳情>>

2023-07-18 14:15:00
可以介紹一下js的內部Date對象功能嗎

提供了操作時間和日期的方法擁有一系列屬性和方法,可以用來獲取系統(tǒng)當前時間或者設置 Date 對象中的時間 通過 getTime()方法可返回距 1970 年 ...詳情>>

2023-01-21 15:51:32
為什么需要三次握手,兩次不行嗎?

弄清這個問題,我們需要先弄明白三次握手的目的是什么,能不能只用兩次握手來達到同樣的目的。 第一次握手:客戶端發(fā)送網(wǎng)絡包,服務端收到了。...詳情>>

2022-10-25 16:55:00
什么是半連接隊列?

服務器第一次收到客戶端的 SYN 之后,就會處于 SYN_RCVD 狀態(tài),此時雙方還沒有完全建立其連接,服務器會把此種狀態(tài)下請求連接放在一個隊列里,...詳情>>

2022-10-25 16:55:00
快速通道
日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 黄色免费三级| 精品视频免费在线| a级毛片免费观看网站| 欧美日本韩国| 麻豆网站在线免费观看| 亚洲第一页乱| 亚洲天堂免费| 天天色色色| 青青青草视频在线观看| 精品视频在线看| 精品视频在线观看一区二区 | 国产一区二区精品久久91| 欧美18性精品| 四虎论坛| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲第一色在线| 天天做人人爱夜夜爽2020毛片| 美女免费精品高清毛片在线视| 四虎论坛| 国产麻豆精品免费密入口| 久草免费资源| 国产美女在线观看| 亚洲精品永久一区| 99久久精品国产国产毛片| 欧美一级视| 成人免费观看的视频黄页| 日韩免费在线视频| 沈樵在线观看福利| 精品国产一区二区三区久久久狼| 成人高清护士在线播放| 黄视频网站免费看| 精品久久久久久中文字幕一区| 欧美激情在线精品video| 国产精品1024永久免费视频| 精品国产一区二区三区精东影业| 国产网站免费在线观看| 天天色色色| 你懂的日韩| 国产国语对白一级毛片| 国产激情视频在线观看| 天天做人人爱夜夜爽2020毛片| 高清一级片| 日韩中文字幕一区二区不卡| 欧美另类videosbestsex久久| 国产伦久视频免费观看 视频| 亚洲第一色在线| 国产一区二区精品| 国产高清在线精品一区二区| 久久99欧美| 精品久久久久久中文字幕一区| 国产高清视频免费| 美国一区二区三区| 国产精品免费久久| 九九久久国产精品大片| 999久久66久6只有精品| 日韩中文字幕在线亚洲一区| 日韩一级精品视频在线观看| 欧美激情一区二区三区在线| 亚洲第一视频在线播放| 二级片在线观看| 四虎影视久久久| 成人高清视频免费观看| 国产精品1024永久免费视频| 精品久久久久久中文字幕2017| 欧美激情在线精品video| 亚洲天堂一区二区三区四区| 青青久久精品| 国产不卡在线观看视频| 色综合久久天天综合观看| 韩国三级香港三级日本三级| 国产成人精品影视| 黄视频网站在线看| 国产高清在线精品一区a| 黄视频网站免费| 国产激情一区二区三区| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 台湾毛片| 青青久久精品| 一本伊大人香蕉高清在线观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本在线www| 日韩在线观看视频网站| 亚洲天堂一区二区三区四区| 青草国产在线| 精品久久久久久中文字幕一区 | 精品视频一区二区三区| 成人免费高清视频| 亚洲第一色在线| 黄视频网站在线看| 麻豆系列 在线视频| 国产高清视频免费观看| 一a一级片| 国产极品精频在线观看| 韩国三级一区| 精品国产一区二区三区久| 四虎论坛| 九九久久国产精品| 国产成人啪精品| 999久久66久6只有精品| 超级乱淫黄漫画免费| 成人a大片高清在线观看| 国产伦精品一区三区视频| 国产一区二区精品| 中文字幕Aⅴ资源网| 国产麻豆精品hdvideoss| 韩国妈妈的朋友在线播放| 九九免费精品视频| 亚久久伊人精品青青草原2020| 沈樵在线观看福利| 国产一级强片在线观看| 成人免费网站久久久| 美女免费精品高清毛片在线视| 国产成人啪精品| 国产高清视频免费| 可以免费看污视频的网站| 午夜久久网| 日韩在线观看视频网站| 韩国毛片 免费| 精品视频一区二区三区免费| 99久久精品国产国产毛片| 高清一级做a爱过程不卡视频| 久久福利影视| 黄色福利| 97视频免费在线| 欧美日本免费| 国产伦精品一区二区三区在线观看| 九九九在线视频| 成人免费高清视频| 精品国产三级a| 黄视频网站免费| 青青久在线视频| 午夜家庭影院| 可以在线看黄的网站| 99久久精品国产麻豆| 日日夜人人澡人人澡人人看免| 四虎久久精品国产| 欧美激情一区二区三区视频高清| 成人免费观看网欧美片| 亚飞与亚基在线观看| 亚洲天堂在线播放| 日本伦理片网站| 人人干人人草| 台湾毛片| 久久国产一久久高清| 美女被草网站| 成人av在线播放| 999久久66久6只有精品| 一级女人毛片人一女人| 国产网站免费在线观看| 人人干人人草| 可以免费看污视频的网站| 国产不卡福利| 欧美激情一区二区三区视频高清| 国产视频网站在线观看| 九九久久国产精品大片| 亚洲精品永久一区| 色综合久久手机在线| 四虎影视库国产精品一区| 精品视频免费看| 国产综合91天堂亚洲国产| 青青青草视频在线观看| 精品美女| 国产高清在线精品一区a| 天天做日日爱| 韩国三级香港三级日本三级| 97视频免费在线| 精品视频在线观看视频免费视频| 中文字幕Aⅴ资源网| 日本在线www| 成人高清免费| 超级乱淫黄漫画免费| 可以免费看污视频的网站| 国产a视频| 久草免费在线观看| 精品久久久久久综合网| 人人干人人草| 色综合久久天天综合观看| 国产成人精品在线| 99久久网站| 国产美女在线一区二区三区| 久久精品人人做人人爽97| 欧美激情一区二区三区视频| 日本伦理片网站| 久久99欧美| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日韩专区在线播放| 国产原创视频在线| 午夜在线观看视频免费 成人| 国产成人精品影视| 在线观看导航| 国产精品免费精品自在线观看| 四虎久久精品国产| 高清一级毛片一本到免费观看| 国产韩国精品一区二区三区| 国产成人啪精品视频免费软件| 免费一级生活片| 国产视频久久久| 欧美国产日韩在线|