比較陣列,vector物件和array物件

2021-10-07 16:34:22 字數 1257 閱讀 3978

要了解陣列,vector物件及array物件的相似與不同之處,結合以下示例分析:

#include #include #include 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] :" << a1[2] << "at" << &a1[2] << endl;

cout << "a2[2] :" << a2[2] << "at" << &a2[2] << endl;

cout << "a3[2] :" << a3[2] << "at" << &a3[2] << endl;

cout << "a4[2] :" << a4[2] << "at" << &a4[2] << endl;

a1[-2] = 20.2;

cout << "a1[2] :" << a1[-2] << "at" << &a1[-2] << endl;

cout << "a3[2] :" << a3[2] << "at" << &a3[2] << endl;

cout << "a4[2] :" << a4[2] << "at" << &a4[2] << endl;

return 0;

}

輸出結果:

a1[2] :3.6 at 0x28cce8

a2[2] :0.142857 at 0xca0328

a3[2] :1.62 at 0x28ccc8

a4[2] :1.62 at 0x28cca8

a1[-2] :20.2 at 0x28ccc8

a3[2] :20.2 at 0x28ccc8

a4[2] :1.62 at 0x28cca8

輸出結果可知:

無論是陣列,vector物件還是array物件,都可用標準陣列表示法來訪問各個元素。其中,從位址可知,array物件和陣列儲存在相同的記憶體區域棧中,而vector物件儲存在自由儲存區或堆中。第三,可以將array物件賦給另乙個array物件,而對於陣列,須逐個元素複製資料。

對於a1[-2] = 20.2;等價於對a1陣列的首元素位址a[0]再往前前移兩個double元素,從而陣列越界。與c語言一樣,c++也不檢查這種越界錯誤。

比較陣列,模板array和模板vector

先上簡單的乙個例項 include include include int main c 98 stl vectora2 4 creat vector with 4 elements no way to initinaize in c98 a2 0 1.0 3.0 a2 1 1.0 5.0 a2 2...

c 陣列和 vector訪問執行效能比較

最近在刷leetcode時,發現對一組資料頻繁操作,陣列的效率比 vector快很多,讓習慣用vector的我著實有點懵,於是做了一下實驗 首先,我在win10上用vs2015,將陣列和vector分別對陣列進行10萬次操作,結果很明顯。下面是執行 include include include v...

C 陣列array與vector的比較

1.陣列的為數必須用 值大於等於1的常量表示式定義,且只能包含整型字面值常量,列舉常量或者用常量表示式初始化的整型const物件,非const變數以及需要到執行階段才知道其值的const變數都不能用來定義陣列的維度 2.陣列的維度必須用 內指定 3.顯示初始化陣列元素的時候用 括起來,成為初始化列表...