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)。