最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

初識C++?Vector模板與實(shí)例化原理

 更新時(shí)間:2022年12月11日 08:40:49   作者:老邊  
這篇文章主要為大家介紹了初識C++?Vector模板與實(shí)例化原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

之前學(xué)了字符串,字符,數(shù)字這些類型,字符串可以看出包含多個(gè)字符的序列,那么包含多個(gè)數(shù)字的序列該是啥,包含其他類型的呢,c++當(dāng)中滿足這個(gè)需求是vector,我們一起來看看吧。

Vector

標(biāo)準(zhǔn)庫類型vector表述對象的集合,可以看成一個(gè)存放其他對象的容器,但是這里要注意的是同一個(gè)vector集合當(dāng)中智能容納一個(gè)類型,容器里面的元素都有一一對應(yīng)的索引,可以通過索引訪問元素。當(dāng)然,vector是標(biāo)準(zhǔn)庫類型,使用需要使用加載,代碼如下:

#include <iostream>
#include <vector>
int main(){
   using namespace std;
   vector<int> vec01;
   vector<int> vec02(4);
   vector<int> vec03(4, 10);
   vector<int> vec04(vec04.begin(),vec04.end());
   return 0;
}

當(dāng)然這里用到了vector的的一些方法,begin,end,這些會(huì)在后面再聊聊。

模板與實(shí)例化

上面是代碼層面的一個(gè)簡單了解,接下來聊聊發(fā)生了什么?

這里首先要明確一個(gè)點(diǎn),vector不是一個(gè)對象,而是創(chuàng)建對象的一個(gè)配置,可以稱為模板,而vector是類模板,當(dāng)然也有函數(shù)模板,具體來看模板的話,首先要知道,我們再開發(fā)的過程當(dāng)中可能用到函數(shù),可能用到類,通常情況下需要先定義,再使用,但是有沒有可能動(dòng)態(tài)的去聲明一個(gè)類呢,比如:

vector <int> vec01; //定義一個(gè)數(shù)字類型的容器
vector <string> veco2; //定義一個(gè)字符串類型的容器

這種情況下,兩行代碼用的都是vector,但是一個(gè)創(chuàng)建的是數(shù)字容器,一個(gè)創(chuàng)建的是string容器,那么vector的作用就不是一個(gè)對象,而是定義一個(gè)對象。至于int vec01,string vec02這些都是他定義一個(gè)對象過程當(dāng)中的配置,那么把這樣的東西叫做模板(有點(diǎn)類型Python當(dāng)中的元類,嘿嘿嘿,好久沒有更新Python的知識點(diǎn)了,差點(diǎn)忘記自己是一個(gè)Python開發(fā)。)。

而通過模板,提供配置,生成具體對象的過程,我們稱為實(shí)例化的過程,個(gè)人理解就是通過vector的一個(gè)規(guī)則,生成一個(gè)具體實(shí)實(shí)在在存在的容器的過程。

性能

好吧,往深處聊聊,我們看一下vector的性能,這些小白基本的小伙伴一定要以理解為主:

vector作為一種容器有點(diǎn)類似數(shù)組,但它的大小可以動(dòng)態(tài)改變,所以可以稱它位動(dòng)態(tài)數(shù)組。

和數(shù)組一樣,vector的元素在內(nèi)存中連續(xù)排列,那么就可以通過指針的偏移來獲取vector中的元素,讀取效率會(huì)很高。

但是完事兒由利必有弊,連續(xù)再查詢上是由優(yōu)勢的,但是如果要插入元素的話,尤其是中間插入,整個(gè)vector的size變大,在內(nèi)存中就需要重新分配空間,常規(guī)的做法是直接申請一個(gè)新的array,并將所有元素拷貝過去;但這么做的話,無疑太浪費(fèi)時(shí)間,因此vector采用的做法是:vector會(huì)分配額外的空間,以適應(yīng)size的動(dòng)態(tài)增長。因此,包含同樣數(shù)量元素的vector和數(shù)組相比,占用的空間會(huì)更大。

轉(zhuǎn)折一下,在vector最后增加或者刪除一個(gè)元素,消耗的時(shí)間是一個(gè)常數(shù)值,與vector的size無關(guān)。

與其他容器相比,vector在獲取元素和對最后一個(gè)元素的操作效率上更高;

但對于中間元素的操作,性能則相對較差。

以上就是初識C++ Vector模板與實(shí)例化原理的詳細(xì)內(nèi)容,更多關(guān)于C++ Vector模板實(shí)例化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言指針之必須要掌握的指針基礎(chǔ)知識

    C語言指針之必須要掌握的指針基礎(chǔ)知識

    這篇文章主要介紹了C語言指針必須要掌握的基礎(chǔ)知識,文中實(shí)例講解的很清晰,有不太懂的同學(xué)可以研究下,希望能夠給你帶來幫助
    2021-09-09
  • VC++中HTControl控件類之CHTRichEdit富文本編輯控件實(shí)例

    VC++中HTControl控件類之CHTRichEdit富文本編輯控件實(shí)例

    這篇文章主要介紹了VC++中HTControl控件類之CHTRichEdit富文本編輯控件,是一個(gè)比較實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • C++?手?jǐn)]簡易服務(wù)器

    C++?手?jǐn)]簡易服務(wù)器

    本文主要介紹了C++?手?jǐn)]簡易服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C++11中內(nèi)聯(lián)函數(shù)(inline)用法實(shí)例

    C++11中內(nèi)聯(lián)函數(shù)(inline)用法實(shí)例

    內(nèi)聯(lián)函數(shù)本質(zhì)還是一個(gè)函數(shù),但在聲明的時(shí)候,函數(shù)體要和聲明結(jié)合在一起,否則編譯器將它作為普通函數(shù)來對待,下面這篇文章主要給大家介紹了關(guān)于C++11中內(nèi)聯(lián)函數(shù)(inline)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • C語言中const與指針使用方法總結(jié)

    C語言中const與指針使用方法總結(jié)

    這篇文章主要介紹了C語言中const與指針使用方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • c++字符串分割的方法

    c++字符串分割的方法

    這篇文章主要介紹了c++字符串分割的方法,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • OpenCV繪制正多邊形的方法

    OpenCV繪制正多邊形的方法

    這篇文章主要為大家詳細(xì)介紹了OpenCV繪制正多邊形的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語言rand和srand函數(shù)使用方法介紹

    C語言rand和srand函數(shù)使用方法介紹

    rand()函數(shù)用來產(chǎn)生隨機(jī)數(shù),但是,rand()的內(nèi)部實(shí)現(xiàn)是用線性同余法實(shí)現(xiàn)的,是偽隨機(jī)數(shù),由于周期較長,因此在一定范圍內(nèi)可以看成是隨機(jī)的。srand()用來設(shè)置rand()產(chǎn)生隨機(jī)數(shù)時(shí)的隨機(jī)數(shù)種子。參數(shù)seed是整數(shù),通常可以利用time(0)或geypid(0)的返回值作為seed
    2023-02-02
  • vscode中配置LeetCode插件的教程(愉快刷題)

    vscode中配置LeetCode插件的教程(愉快刷題)

    這篇文章主要介紹了vscode中配置LeetCode插件的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-03-03

最新評論

天镇县| 图木舒克市| 富宁县| 江孜县| 阳高县| 新巴尔虎右旗| 合作市| 玉环县| 西宁市| 大厂| 类乌齐县| 闵行区| 宁武县| 麦盖提县| 东明县| 连城县| 五华县| 深水埗区| 六盘水市| 台江县| 新邵县| 上杭县| 工布江达县| 镇安县| 沂水县| 渝中区| 仙桃市| 姜堰市| 萨嘎县| 贡山| 三门峡市| 洱源县| 革吉县| 喜德县| 乐业县| 姚安县| 合山市| 青州市| 河南省| 平度市| 临海市|