欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

初識C++?Vector模板與實例化原理

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

引言

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

Vector

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

#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;
}

當然這里用到了vector的的一些方法,begin,end,這些會在后面再聊聊。

模板與實例化

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

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

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

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

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

性能

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

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

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

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

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

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

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

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

相關(guān)文章

  • 運用指針在不用加號的情況進行加法運算的講解

    運用指針在不用加號的情況進行加法運算的講解

    今天小編就為大家分享一篇關(guān)于運用指針在不用加號的情況進行加法運算的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • c++中new一個結(jié)構(gòu)體初始化過程

    c++中new一個結(jié)構(gòu)體初始化過程

    這篇文章主要介紹了c++中new一個結(jié)構(gòu)體初始化過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • c++ 防止頭文件重復(fù)引入的三種方法

    c++ 防止頭文件重復(fù)引入的三種方法

    這篇文章主要介紹了c++ 防止頭文件重復(fù)引入的三種方法,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-02-02
  • 詳解C語言之文件操作下)

    詳解C語言之文件操作下)

    這篇文章主要介紹了關(guān)于C語言文件操作方法的相關(guān)資料,小編覺得這篇文章寫的還不錯,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-11-11
  • c語言內(nèi)存泄漏嚴重的解決方法

    c語言內(nèi)存泄漏嚴重的解決方法

    這篇文章主要介紹了c語言內(nèi)存泄漏的解決方法,幫助大家更好的理解和使用c語言開發(fā),感興趣的朋友可以了解下
    2020-09-09
  • C++堆和棧的區(qū)別與聯(lián)系講解

    C++堆和棧的區(qū)別與聯(lián)系講解

    今天小編就為大家分享一篇關(guān)于C++堆和棧的區(qū)別與聯(lián)系講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 一起來學(xué)習(xí)C++的構(gòu)造和析構(gòu)

    一起來學(xué)習(xí)C++的構(gòu)造和析構(gòu)

    這篇文章主要為大家詳細介紹了C++構(gòu)造和析構(gòu),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言實現(xiàn)簡單的掃雷小游戲

    C語言實現(xiàn)簡單的掃雷小游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單的掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • C語言中位運算符"|"的5種高級用法總結(jié)

    C語言中位運算符"|"的5種高級用法總結(jié)

    這篇文章主要為大家詳細介紹了C語言中位運算符"|"的5種高級用法,文中的示例代碼講解詳細,具有一定的參考價值,需要的可以參考一下
    2023-04-04
  • c++ 形狀類Shape(派生出圓類Circle和矩形類Rectangle)

    c++ 形狀類Shape(派生出圓類Circle和矩形類Rectangle)

    通過C++方式,建立一個形狀類Shape作為基類,派生出圓類Circle和矩形類Rectangle 求出面積并獲取相關(guān)信息
    2020-11-11

最新評論