要了解陣列,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.顯示初始化陣列元素的時候用 括起來,成為初始化列表...