1. 程式人生 > 其它 >模板類vector和模板類Array

模板類vector和模板類Array

陣列的替代品

模板類vector

模板類vector類似於string類,也是一種動態陣列。你可以在執行階段設定vector物件的長度,可在末尾附加新資料。還可在中間插入新

資料。基本上,它是使用new建立動態陣列的替代品。實際上,vector類確實使用new和delete來管理記憶體,但這種工作是自動完成的。

首先,要使用vector物件,必須包含標頭檔案vector,其次,vector包含在名稱空間std中,因此可使用using編譯指令、using宣告或std::vector,第三,模板使用不同的語法來指出它儲存的資料型別。第四,vector類使用不同的語法來指定元素數。

#include <vector>
using namespace std;
vector<int> vi;    // create a zero-size array of int
int n;
cin >> n;
vector<double> vd(n); // create an array of n doubles

其中, vi 是一個vector<int>物件, vd 是一個vector<double>物件。由於vector物件在插入或新增值時自動調整長度, 因此可以將vi

的初始長度設定為零。但要調整長度, 需要使用vector包中的各種方法。

一般而言, 下面的宣告建立一個名為vt的vector物件, 它可儲存n_elem個型別為typeName的元素:

vector<typeName> vt(n_elem);

其中引數n_elem 可以是整型常量,也可以是整型變數。

模板類Array(c++11)

vector 類的功能比陣列強大, 但付出的代價是效率稍低。如果需要的是長度固定的陣列,使用陣列是更佳的選擇,但代價是不那麼方便

和安全。鑑於此,C++11新增了模板類array,它也位於名稱空間std中。與陣列一樣, array 物件的長度也是固定的,也使用棧(靜態記憶體

分配),而不是自由儲存區,因此其效率與陣列相同,但更方便, 更安全。

要建立array物件, 需要包含標頭檔案array。array物件的建立語法與vector稍有不同

#include <array>
using namespace std;
array<int, 5> ai; // create array object of 5 ints
array<double, 4> ad= (1.2, 2.1, 3.43, 4.3);

推而廣之,下面的宣告建立一個名為arr的array物件,它包含n_elem個型別為typename的元素:

array<typeName, n_elem> arr;

與建立vector物件不同的是,n_elem不能是變數。

在C++11中,可將列表初始化用於vector和array物件,但在C++98中,不能對vector物件這樣做。

本文來自部落格園,作者:yyyz,轉載請註明原文連結:https://www.cnblogs.com/yyyzyyyz/p/15471901.html