陣列的代替品 vector和array

2021-08-18 19:52:15 字數 979 閱讀 7877



類似於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首...