vector是c++標準模板庫中的乙個重要組成部分,vector是乙個向量容器,是一種動態陣列。它能夠存放各種型別的物件,簡單地說,vector是乙個能夠存放任意型別的動態陣列,可以動態改變大小。支援快速隨機訪問。
注意:vector將元素儲存在連續的記憶體空間中,由於元素是連續儲存的,由元素的下標來計算其位址是非常快速的,但是在vector容器的中間位置新增或刪除元素會非常耗時,在一次插入或刪除操作後,需要移動插入/刪除位置之後的所有元素,來保持連續儲存。而且,新增乙個元素有時可能還需要分配額外的儲存空間。在這種情況下,每個元素都必須移動到新的儲存空間中。
使用前提:
標頭檔案包含:#include
命名空間:vector屬於std命名空間,因此需要通過命名限定,可在檔案開頭加上
using std::vector;
或者using namespace std;
或者 在定義每個vector物件時,寫成std::vector
參考:
vector是乙個模板類,其內部定義了建構函式和其他各種功能成員函式。其在定義物件時需注意初始化的一些細節,具體可以通過以下三個例子看出。
預設構造:
vectorvecexample1;
//預設定義了乙個長度為0,沒有任何值的向量vecexample1,此時:vecexample1.size() = 0,vecexample1[0]會報錯。如果用debug來看的話,vecexample1為0,可通過push_back()函式來動態改變vecexample1的長度。
帶單個整形引數的建構函式:描述向量的初始大小
vectorvecexample2(1);
//呼叫vector的建構函式,並傳遞引數1,即定義了乙個長度為1,並預設初始化為0的向量vecexample2,此時:vecexample2.size()=1,vecexample2[0]=0。如果用debug模式來看的話,vecexample2為1。仍然可以通過push_back()函式來動態改變vecexample的長度。
vectorvecexample3(100);
//與定義vector vecexample2(1)類似,只不過此時向量長度為100,並且每個向量元素都預設初始化為0。如果用debug模式來看的話,vecexample3為100。
vectorvecexample4(100,20);
//與定義vector vecexample3(100)類似,只不過此時相當於呼叫了vector模板類的另一種型別的建構函式,並初始化向量的每個元素為20。
另外還可以利用陣列對vector進行初始化:產生初始值為乙個區間的向量(左閉右開區間)
int myints = ;
std::vector
myvector(myints, myints + 8);// 32 71 12 45 26 80 53 33
建立二維vector矩陣:
int m = 10,n = 5;
vector
> ivec(m ,vector
(n,10));
cout
<" "
<0].size()cout
<#include
#include
using
namespace
std;
typedef
vector
intvector;// 自定義型別intvector
// 測試vector 容器的功能
int main()
(1) 迭代器方法:vector
::iterator it;
for(it=myvec.begin();it!=myvec.end();it++)
v.clear();
詳細解釋:
(3) 對vector中資料求均值和方差
作為陣列的最佳替代者,vector容器有無數的優勢,但是在需要儲存一組固定個數的資料時,例如一年的12個月,一周的七天,此時用vector並不是最佳選擇,stl提供了替代陣列的第二種容器選擇——array容器。
STL 之vector向量容器
vector向量容器 作為陣列的乙個泛化推廣的vector容器,不僅可以陣列一樣的元素隨機訪問,還可以在容器的尾端插入新元素 vector是乙個簡單,高效的容器,在尾端插入和刪除元素,演算法時間複雜度為o 1 常數階,其他元素的插入和刪除為o n 的線性階,其中n為容器的元素個數,vector具有自...
STL 向量vector詳解
vector是stl中最常見的容器,它是一種順序容器,支援隨機訪問。vector是一塊連續分配的記憶體,從資料安排的角度來講,和陣列極其相似,不同的地方就是 陣列是靜態分配空間,一旦分配了空間的大小,就不可再改變了 而vector是動態分配空間,隨著元素的不斷插入,它會按照自身的一套機制不斷擴充自身...
STL(六)Vector向量容器
作為陣列的乙個泛化推廣的vector容器,vector是一種簡單 高效的容器。在尾端插入和刪除元素,演算法時間複雜度為o 1 常數階,其他元素的插入和刪除為o n 線性階,其中n為vector容器的元素個數。vector具有自動的記憶體管理功能,對於元素的插入和刪除,可動態調整所占用的記憶體空間。一...