類似於string類是乙個動態陣列
標頭檔案:#include
宣告建立乙個名為vt的vector物件,他可儲存n_elem個型別為typename的元素:
vectorvt(n_elem)
array物件和陣列一樣其長度是固定的,也是用棧(靜態儲存空間)
標頭檔案:#include
宣告建立乙個名為arr的array物件,它包含n_elem個型別為typename的元素:
arrayarr;
與建立vector物件不同的是,n_elem不是變數。
比較陣列,vector物件和array物件
#include
#include
#include
using namespace std;
int main();
vectora2(4);
a2[0]=1.0/3.0;
a2[1]=1.0/5.0;
a2[2]=1.0/7.0;
a2[3]=1.0/9.0;
arraya3=;
arraya4;
a4=a3;
cout<<"a1[2]:"cout<<"a1[-2]:"結果:
array物件和陣列儲存在相同的記憶體區域(棧)內,而vector儲存在另乙個區域中(自由儲存區或堆);除此之外可以將乙個array物件賦給另乙個array物件,但對於陣列需要乙個乙個複製資料。
a1[-2]=20.2也就是*(a1-2)=20.2:其定義為a1指向的地方向前移動兩個double元素儲存20.2,也就是將資訊儲存在陣列之外。這個位子可能在a2或者a3上,所以這表明陣列是不安全的。
那麼如何防止這種索引錯誤呢?
可以使用成員函式。就像使用cin物件的成員函式getline()來讀取正行字串一樣,vector和array物件的成員函式at():
a2.at(1)=2.3; //將2.3賦值給a2[1],能在執行期間捕獲非法索引。
陣列的替代品 模板類Vector的使用
模板類vector類似於string,也是一種動態陣列,可以在執行階段設定vector的物件的長度,也可在末尾附加新資料,可以在中間插入新資料。基本上來說,它是使用new建立動態陣列的替代品。實際上,vector類確實使用new和delete來管理記憶體,不過這種工作是自動進行的。首先使用vecto...
c 中的array陣列和vector陣列
我覺得實驗一下會記得比較牢,話不多直接上 下面是array陣列,感覺用的不多。cpp 風格陣列 array include include include using namespace std intmain for int i 0 i myint.size i size 獲取長度,vector也...
C 陣列和vector的基本操作
int a 5 int size sizeof a sizeof a for int i 0 i size i cout a i sizeof 是乙個操作符 operator 返回物件或型別所佔記憶體空間的位元組數。sizeof a 返回陣列a所佔記憶體空間的位元組數 sizeof a 返回陣列a首...