中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站建設(shè)合同糾紛問題百度廣告聯(lián)盟賺廣告費

網(wǎng)站建設(shè)合同糾紛問題,百度廣告聯(lián)盟賺廣告費,加盟營銷型網(wǎng)站建設(shè),電子商務(wù)網(wǎng)站怎么建引言: 北京時間:2023/2/27/11:42,高數(shù)考試還在進行中,我充分意識到了學(xué)校的不高級,因為題目真的沒什么意思,雖然挺平易近人,但是……,考試期間時間比較放松,所以不能耽誤…

引言:

北京時間:2023/2/27/11:42,高數(shù)考試還在進行中,我充分意識到了學(xué)校的不高級,因為題目真的沒什么意思,雖然挺平易近人,但是……,考試期間時間比較放松,所以不能耽誤我更新博客,自從上篇博客,我們把string類的基本知識學(xué)習(xí)完之后,今天我們的主要目標(biāo)就是學(xué)習(xí)一下什么是vector

在這里插入圖片描述

復(fù)習(xí)模板(從模板開始學(xué)習(xí)vector)

首先vector是什么:
在C++中vector是一個類,是一個類似于string類的類,并且它們都是一個模板類,區(qū)別于string類,vector是一個可以管理任意數(shù)組的數(shù)組(只要數(shù)據(jù)類型合適),但string類是一個只針對于字符串?dāng)?shù)組的字符串類,所以本質(zhì)上vector就是用一個動態(tài)增長的數(shù)組實現(xiàn)的模板類。

認(rèn)識了vector是什么,現(xiàn)在我們可以知道,它就是一個動態(tài)數(shù)組,并且它可以通過類模板的形式,來管理不同的數(shù)據(jù)類型,所以我們意識到,類模板和vector是有一定的聯(lián)系的,此時我們就需要類從模板的知識入手,以淺入深學(xué)習(xí)STL中的vector容器。

類模板:

定義模板形式:

template<class T>

這個代碼就可以實現(xiàn),函數(shù)模板和類模板定義,此時無論是函數(shù)中,還是類中,都可以通過替換 <>尖括號中的類型來替換整個函數(shù)或者整個類中的數(shù)據(jù)類型,以方便于給所有的類型的數(shù)據(jù)使用,如下圖:
在這里插入圖片描述
此時就可以如上圖main函數(shù)中,通過在尖括號<> 中使用不同的數(shù)據(jù)類型實現(xiàn)對Stack整個類使用不同的數(shù)據(jù)類型,進而實現(xiàn)泛型編程,充分使用類模板。

所以可以看出我們的STL中的vector類就是通過類模板的形式,實現(xiàn)的一個可以針對所有數(shù)據(jù)類型的動態(tài)數(shù)組。

總:vector類區(qū)別于string類的本質(zhì)原因就是vector類通過類模板的形式實現(xiàn)可以針對所有數(shù)據(jù)類型的動態(tài)數(shù)組

vector的學(xué)習(xí)

了解了什么是類模板,什么是vector的本質(zhì),此時正式開始學(xué)習(xí)vector,首先還是那句話,vector類和string類本質(zhì)上是沒有什么區(qū)別的,最大的區(qū)別就是數(shù)據(jù)類型的不同,所以此時我們學(xué)習(xí)vector類的過程中本質(zhì)上還是在學(xué)習(xí)string類,又因為我們上篇博客已經(jīng)學(xué)習(xí)了什么是string類,此時學(xué)習(xí)vector類時,我們就會變得更加的輕松,并且,使用vector類會變得更加的方便。
在這里插入圖片描述
懂的上述,我們知道學(xué)習(xí)vector還是在吃舊飯,所以我們按照以前的方式來進行學(xué)習(xí)就行了,首先第一步打開C++官網(wǎng),尋找vector的具體說明和各種成員函數(shù),在vector的首頁,我們就可以看到上圖的內(nèi)容,vector和我們所說的一樣,是一個類模板,并且此時還使用了一個新的概念:空間配置器(內(nèi)存池)的概念,目的就是為了可以提高數(shù)組申請空間方面的效率

注:空間配置器是 STL 源碼中實現(xiàn)的一個小灶,用來應(yīng)對 STL 容器頻繁申請小塊內(nèi)存空間的問題。 他算是一個小型的內(nèi)存池 ,以提升STL 容器在空間申請方面的效率

下面,我們就圍繞著vector類的一些常用的接口,來深入了解一下vector的具體實現(xiàn)

首先是vector類中的構(gòu)造函數(shù):
在這里插入圖片描述
如下圖:就是一個簡單的vector類的使用:

其中使用了vector類中的,尾插(push_back)、迭代器(iterator)、方括號加下標(biāo)([])和拷貝構(gòu)造函數(shù)(copy

:頭文件 #include<vector>

了解了vector類的基本使用,此時我們就來看一看它構(gòu)造函數(shù)中的 fill 的使用,初始化對象(往數(shù)組中填充數(shù)據(jù))和迭代器區(qū)間(range)的使用:
在這里插入圖片描述
在這里插入圖片描述

迭代器區(qū)間

并且此時我們發(fā)現(xiàn),該迭代器的類型不是以前我們所見的 iterator 而是 inputiterator,此時 inputiterator 代表的就是一個可以接收任意容器的迭代器區(qū)間,不單單只是vector容器,也可以是別的容器,例:string類(前提是數(shù)據(jù)類型可以匹配上),并且此時我們了解到迭代器是有非常多的種類的,具體可以參考該鏈接:迭代器種類和使用

如下圖:證明我們的vector迭代器是可以接收任意容器的迭代器區(qū)間的(因為vector類中的迭代器是使用 inputiterator 類型的迭代器)
在這里插入圖片描述

并且因為此時我們使用的是一個迭代器區(qū)間,所以我們可以規(guī)定,迭代器的開始位置和結(jié)束位置,通過begin()end()來控制,:此時char類型轉(zhuǎn)化為int類型,本質(zhì)上是類型轉(zhuǎn)換,然后通過ASCII碼值來進行打印,如下圖:
在這里插入圖片描述

逆向迭代器

搞定了上述迭代器區(qū)間的使用,此時我們來看一看以前了解過的逆向迭代器的使用,如下圖:
在這里插入圖片描述
所以我們可以發(fā)現(xiàn),雖然范圍for用起來非常的方便,但是并不可以支持逆向遍歷,并且本質(zhì)上范圍for使用的是迭代器,所以本質(zhì)上迭代器才是王者,并且以后我們遇到別的數(shù)據(jù)類型,例如:樹狀結(jié)構(gòu)或者鏈表,這些遍歷都是使用迭代器進行的。

開空間函數(shù)(reserve和resize)

reserve:
搞定了vector類中的構(gòu)造函數(shù),此時我們看一看,vector中別的函數(shù),如:reserve函數(shù)(提前開空間函數(shù)),如下圖:
在這里插入圖片描述
該圖,充分展示了開空間函數(shù)(reserve)的使用。

resize:
了解vector類中的resize函數(shù),我們通過一個題目來搞定它:

題目:給定一個非負整數(shù),生成楊輝三角的前numRows行,在楊輝三角中,每個數(shù)是它左上方的數(shù)的和

class Solution1
{
public:vector<vector<int>> generate(int numRows)//此時就是一個類中類的使用,例:vector<int>中代表的是該vector中的每個 數(shù)據(jù)是int,而vector<vector<int>>代表的是,該vector中的數(shù)據(jù)是vector<int>而已{//本質(zhì)可以理解成一個二維數(shù)組:一個vector數(shù)組,指向了一個一個的vector的意思vector<vector<int>> vv;//此時是可以直接在這里使用類里面的構(gòu)造函數(shù)進行初始化的(但是為了控制類中的數(shù)據(jù),我們只能使用resize)vv.resize(numRows, vector<int>());//此時這樣寫的意思就是:開辟numRows行,然后給一個匿名對象(vector<int>)去初始化這些行,當(dāng)然不使用匿名對象,也可以使用vector<int> v;進行for (size_t i = 0; i < vv.size(); ++i)//無論是上面的那個()的意思,還是下面這個()的意思,本質(zhì)上都是為了取調(diào)用函數(shù),獲得一個返回值{vv[i].resize(i + 1, 0);//和上面那句是一樣的,開空間,然后用0去初始化(并且此時剛好符合題意:第一行一個數(shù)據(jù),第二行兩個數(shù)據(jù),第三行三個數(shù)據(jù),充分體現(xiàn)出for循環(huán)的好處)vv[i][0] = vv[i][vv[i].size() - 1] = 1;//此時就是根據(jù)楊輝三角的特性,把每一行的第一個數(shù)據(jù)和最后一個數(shù)據(jù)給成(1)}//此時vv[i].size(),其實本質(zhì)上還是vector<int>類,不是int類,所以此時表示的是第幾個vector<int>,然后把該類的大小減1給給它for (size_t i = 0; i < vv.size(); ++i){for (size_t j = 0; j < vv[i].size(); ++i)//vv[i].size()代表的就是vector<int>類中的那個vector數(shù)組的大小{if (vv[i][j] == 0){vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];//這句代碼就是經(jīng)典的楊輝三角代碼(上一行本列的數(shù)據(jù)+上一行上一列的數(shù)據(jù))}}}return vv;}
};

從上題中,我們可以看出,resize函數(shù)在vector中,也具備開空間和初始化的作用,并且從上述代碼和注釋中,我們可以看出,vector<vector< int >>是可以當(dāng)作一個指定空間大小的二維數(shù)組使用的,只不過此時vector類中不是int,而是一個vector< int >,一個類中類,并且該類內(nèi)存的類是一個int類型的類。本質(zhì)上還是模板的作用,只是此時vector類模板的數(shù)據(jù)類型改變了而已;如下圖:
在這里插入圖片描述
總而言之就是模板的數(shù)據(jù)類型不同而已

在這里插入圖片描述

總結(jié):考試中,沒什么狀態(tài)寫,讓我擺爛一個一個星期吧!

http://www.risenshineclean.com/news/4679.html

相關(guān)文章:

  • 官方網(wǎng)站建設(shè)要點最近三天的新聞大事簡短
  • 太平洋保險網(wǎng)站做的這么爛打廣告推廣怎么做
  • 分類網(wǎng)站建設(shè)方案廣州網(wǎng)站優(yōu)化
  • 怎么找網(wǎng)站模板seo搜索引擎入門教程
  • 網(wǎng)站開發(fā)有哪些要求咖啡seo是什么意思
  • 泰安做網(wǎng)站哪家好企業(yè)網(wǎng)站制作方案
  • 浦東新區(qū)網(wǎng)站建設(shè)公司哪家靠譜奇葩網(wǎng)站100個
  • html 網(wǎng)站地圖北京seo顧問推推蛙
  • 臨沂最好的做網(wǎng)站公司網(wǎng)絡(luò)推廣費用高嗎
  • 網(wǎng)站開發(fā)需要團隊怎么做互聯(lián)網(wǎng)推廣
  • 上海高端定制網(wǎng)站公司河南企業(yè)網(wǎng)站建設(shè)
  • 有人知道網(wǎng)站怎么做嗎海外網(wǎng)站
  • 濟南網(wǎng)站建設(shè)599網(wǎng)絡(luò)推廣的方法有
  • 上海網(wǎng)站建設(shè)公司地廣州專業(yè)seo公司
  • 如何查到別人的網(wǎng)站做哪些競價詞友情鏈接查詢友情鏈接檢測
  • wordpress如何建站群百度數(shù)據(jù)分析工具
  • W做網(wǎng)站最佳bt磁力狗
  • 難道做網(wǎng)站必須用vue框架嗎系統(tǒng)優(yōu)化軟件哪個好
  • 食品行業(yè)網(wǎng)站開發(fā)seo資源咨詢
  • 現(xiàn)在什么視頻網(wǎng)站做的最好網(wǎng)絡(luò)營銷論文
  • 最新的網(wǎng)站建設(shè)軟件百度個人中心登錄
  • 工業(yè)設(shè)計專業(yè)就業(yè)前景怎么樣百度優(yōu)化服務(wù)
  • 網(wǎng)站內(nèi)怎樣做關(guān)鍵詞有效果網(wǎng)絡(luò)優(yōu)化論文
  • 賺錢網(wǎng)站開發(fā)天津百度推廣
  • 凡客誠品是品牌嗎廣州seo外包
  • 阿里巴巴批發(fā)網(wǎng)站上面怎么做微商單頁網(wǎng)站制作
  • 網(wǎng)站建設(shè)宗旨怎么寫谷歌推廣效果怎么樣
  • 項目網(wǎng)站建設(shè)方案佛山網(wǎng)站建設(shè)工作
  • 做便民網(wǎng)站都需要提供什么海外推廣
  • 做英文網(wǎng)站用目錄還是子域名找做網(wǎng)站的公司