色欲av一区久久精品_久久综合色综合色88_无码在线观看不卡_色黄视频网站_亚洲国产精品久久久久秋霞66

<C++>初識(shí)STL

時(shí)間:2022-07-05

STL的出現(xiàn)背景

長(zhǎng)久以來(lái),軟件屆就一直希望建立一種可重復(fù)利用的東西

C++的面向?qū)ο蠛头盒途幊趟枷耄康木褪菑?fù)用性的提升

數(shù)據(jù)結(jié)構(gòu)和算法沒(méi)能有一套標(biāo)準(zhǔn),導(dǎo)致被迫從事大量重復(fù)工作

為了建立數(shù)據(jù)結(jié)構(gòu)和算法的一套標(biāo)準(zhǔn),那么STL就誕生了


STL基本概念

STL全稱:標(biāo)準(zhǔn)模板庫(kù)(Standard Template Library)

STL從廣義上分為:容器(container)算法(algorithm)迭代器(iterator)

容器和算法之間通過(guò)迭代器進(jìn)行無(wú)縫連接

STL幾乎所有的代碼都采用了模板類或者模板函數(shù)


STL六大組件

STL六大組件分別是:容器、算法、迭代器、仿函數(shù)、適配器、空間配置器。

容器:各種數(shù)據(jù)結(jié)構(gòu),如vector、list、deque、set、map等,用來(lái)存放數(shù)據(jù)。

算法:常用的各種算法,如sort、find、copy、for_each等

迭代器:扮演了容器與算法之間的粘合劑,迭代器的使用非常類似于指針,初學(xué)階段我們可以先理解迭代器為指針。

仿函數(shù):行為類似函數(shù),可作為算法的某種策略

適配器:一種用來(lái)修飾容器或者仿函數(shù)或迭代器結(jié)構(gòu)的東西。

空間配置器:負(fù)責(zé)空間的配置與管理。


初識(shí)容器算法迭代器

迭代器種類:

image.png


常用的迭代器種類為雙向迭代器,和隨機(jī)訪問(wèn)迭代器。

了解STL容器、算法、迭代器概念之后,我們利用代碼感受STL的魅力

STL中最常用的容器為vector,可以理解為數(shù)組,下面我們將學(xué)習(xí)如何向這個(gè)容器中插入數(shù)據(jù)、并遍歷這個(gè)容器。


vector容器的初次使用

容器: vector

算法: for_each

迭代器:vector::iterator


存放內(nèi)置數(shù)據(jù)類型

image.png

首先創(chuàng)建整型的vector容器 ve,將1、0、0、8、6依次尾插入ve容器內(nèi),然后利用迭代器來(lái)訪問(wèn)容器中的數(shù)據(jù),分為while、for、for_each三種循環(huán)方法:

1、while循環(huán)

創(chuàng)建兩個(gè)指針itBegin、itEnd分別指向ve容器的第一個(gè)位置和最后一個(gè)元素的下一個(gè)位置,利用while循環(huán),當(dāng)遞增的itBegin不等于itEnd時(shí),輸出解引用的itBegin,就可以得到該位置對(duì)應(yīng)的數(shù)據(jù),遞增的語(yǔ)句是itBegin++。


2、for循環(huán)

創(chuàng)建一個(gè)指針即可,也是讓指針從begin遞增,在不等于end時(shí)依次解引用輸出數(shù)據(jù)。這個(gè)方法比較方法,我個(gè)人推薦使用


3、for_each循環(huán)

使用for_each循環(huán)需要先引入頭文件#include<algorithm>,這個(gè)頭文件包含了算法里的方法。參數(shù)列表分別是:起始位置,終止位置,打印函數(shù)。所以我定義了一個(gè)printInfo函數(shù)來(lái)不換行打印數(shù)據(jù)。


存放自定義數(shù)據(jù)類型

image.png

vector通過(guò)參數(shù)列表里的數(shù)據(jù)類型來(lái)決定容器內(nèi)存放的數(shù)據(jù)類型,這里參數(shù)列表指定時(shí)Person類,那么就可以將創(chuàng)建的對(duì)象p1、p2、p3存入容器內(nèi),再利用for循環(huán)打印數(shù)據(jù)。和上面不同的是,打印姓名身高用的是->操作符,這是因?yàn)閕t相當(dāng)于一個(gè)指針,所以可以直接通過(guò)指針調(diào)用對(duì)象的屬性,當(dāng)然也可以這樣寫:(*t).name,先解引用再調(diào)用的方式也可以。


vector容器的嵌套使用

容器相當(dāng)于一個(gè)數(shù)組,那么數(shù)組嵌套數(shù)組不就是二維數(shù)組嗎,我們來(lái)測(cè)試一下。

image.png

創(chuàng)建的這個(gè)V容器,他的參數(shù)列表是vector<int>,那就說(shuō)明該容器存入的是存入整型數(shù)據(jù)的容器,說(shuō)白了就是二維整型數(shù)組。然后先創(chuàng)建小容器并進(jìn)行賦值,再將小容器尾插入大容器內(nèi),調(diào)用自定義的printVector函數(shù)來(lái)打印數(shù)據(jù)。

二維數(shù)組都是兩層for循環(huán)打印,類似的對(duì)于嵌套容器來(lái)說(shuō)也一樣。 第一層for循環(huán)決定著循環(huán)的次數(shù),第二層for循環(huán)的(*T)用到了二級(jí)指針,也就是說(shuō)大容器T指針解引用之后還是一個(gè)小容器的指針,根據(jù)T++這行代碼來(lái)更新指向也就能改變小指針的容器,從而輸出嵌套容器內(nèi)的所有數(shù)據(jù)。


運(yùn)行效果

image.png


Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)

與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
掃描二維碼
與項(xiàng)目經(jīng)理交流
ciya68