標準庫型別vector

2021-07-31 09:42:01 字數 1736 閱讀 1199

標準庫型別vector表示物件的集合,其中所有物件的型別都相同。集合中的每個物件都有乙個與之對應的索引,索引用於訪問物件。因為vector「容納著」其他物件,所以它也常被稱作container(容器)。

#include 

#include

using

namespace

std;

int main(int argc, char* argv)

; vector

ivector(a,a+7);

//vector的賦值並不可以像陣列一樣方便的用花括號方便的完成賦值,

//這裡借用了陣列來初始化這個vector,初始化方式vectorintvec(begin,end);

//這樣用看上去還是比較習慣的。

vector

::iterator iter;

for (iter=ivector.begin();iter!=ivector.end();iter++)

cout

<5]=1;

//單個vector物件的賦值,這個方式看上去還是和陣列一樣的,不過你也可以這麼寫ivector.at(5)=1;但是就是不習慣

for_each(ivector.begin(),ivector.end(),print);//用for_each進行遍歷

cout

<5]=1;

cout

<5]/用for_each進行遍歷

return0;}

/*這種方式的遍歷:

對stl的容器中,遍歷是乙個非常常用的動作,為此stl也提供乙個演算法,for_each

遍歷乙個容器,我們第乙個想到的是

for (int i = 0;i < a.size();++i)的迴圈來實現。

這樣做有幾個弊端,比如我現在很多地方用vector作為傳引用引數進行傳遞,為了減少物件構造和析構的代價,

一般採用指標來傳遞,那麼我就要在程式很多地方寫上類似下面的**

for (int i=0;i < a.size();++i)

delete a[i];

雖然**很多都一樣,可是到處氾濫著這種迴圈語句,讓人閱讀程式容易和其它釋放指標行為產生混淆

好處有幾個:

1:for_each呼叫容器內部的遍歷函式,比我們的++的方式遍歷,效率不會低是肯定的

2:delete指標時候,可以再次確認指標型別

3:用仿函式類,編譯器在編譯期對函式進行展開,實際上沒有函式呼叫的發生

4:加強**自說明能力,減少迴圈,提高**可讀性

標準庫vector型別

vector是同一種型別的物件的集合,每個物件都有乙個對應的整數索引值.和string物件一樣,標準庫將負責管理與儲存元素相關的記憶體.我們把vector稱為容器,是因為它可以包含其他物件.乙個容器中的所有物件都必須是同一種型別.使用vector之前,必須包含相應的標頭檔案.include usin...

標準庫型別vector

宣告 include using std vector 定義和初始化vector物件 vectorv1 vectorv2 v1 vectorv2 v1 vectorv3 n,val v3包含了n個重複的元素,每個元素的值都是val vectorv4 n v4包含了n個重複地執行了值初始化的物件 ve...

標準庫型別vector

文件 vector標準庫 include using std vector 預設初始化 vector a 定義乙個指定型別的空vector 列表初始化 vector b c 11新標準提供的另外一種初始化的方法,建立指定數量的元素 vector n,a 建立了n個型別為t的元素a 值初始化 vect...