1. 程式人生 > >學習日記--用Vector(向量)實現動態數組

學習日記--用Vector(向量)實現動態數組

gin wid 註意 urn [] 經典 pri double border

Vector的使用方法:

能在添加元素時增加長度的數組稱為動態數組或可變長數組。相對地,必須事先指定長度,只能容納一定數量元素的數組稱為靜態數組。下面分享一下如何借助STL(標準模板庫)中的Vector實現動態數組及管理數據。

仔細觀察程序輸出的值,有助於很快理解Vector的便利之處。

經典示例程序:

 1 #include<iostream>
 2 #include<vector>
 3 using namespace std;
 4 
 5 void print (vector<double> V)
 6 {
 7     for
( int i = 0 ; i < V.size() ; i++) 8 { 9 cout<<V[i]<<" "; 10 } 11 cout<<endl; 12 } 13 14 int main ( int argc , const char * argv[]) 15 { 16 vector<double> V; 17 18 V.push_back(0.1); 19 V.push_back(0.2); 20 V.push_back(0.3);
21 V[2] = 0.4; 22 print(V);//0.1 0.2 0.4 23 24 V.insert(V.begin() + 2,0.8); 25 print(V);//0.1 0.2 0.8 0.4 26 27 V.erase(V.begin() + 1); 28 print(V);//0.1 0.8 0.4 29 30 V.push_back(0.9); 31 print(V);//0.1 0.8 0.4 0.9 32 33 return 0; 34 }

Output

0.1 0.2
0.4 0.1 0.2 0.8 0.4 0.1 0.8 0.4 0.1 0.8 0.4 0.9

vector(double) V;是聲明一個double類型變量名為V的向量,STL提供的vector是一個模板,所以需要我們在< >中指定類型,從而定義管理該類型數據的容器。在訪問vector中的元素時,可以與數組一樣使用“[ ]”運算符。

下面介紹Vector的成員函數示例:

函數名 功能 復雜度
size() 返回向量的元素數 O(1)
push_back(x) 在向量末尾添加元素x O(1)
pop_back() 刪除向量的最後一個元素 O(1)
begin() 返回指向向量開頭的叠代器 O(1)
end() 返回指向向量末尾(最後一個元素的後一個位置)的叠代器 O(1)
insert(p,x) 在向量的位置p處插入元素x O(n)
erase(p) 刪除向量中位置P的元素 O(n)
clear() 刪除向量中所有元素 O(n)

在使用vector的成員函數時,一定要註意相應的復雜度!!比如insert(),erase()與clear(),它們3個的復雜度是O(n)。

學習日記--用Vector(向量)實現動態數組