標準庫型別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...