在c++中vector是一個十分有用的容器。
作用它能夠像容器一樣存放各種類型的對象簡單地說vector是一個能夠存放任意類型的動态數組能夠增加和壓縮資料。
特别注意
使用vector需要注意以下幾點
1、如果你要表示的向量長度較長需要為向量内部儲存很多數容易導緻記憶體洩漏而且效率會很低
2、Vector作為函數的參數或者傳回值時需要注意它的寫法
double Distance(vector<int>&a, vector<int>&b) 其中的“&”絕對不能少
執行個體vector<int>test;
//建立一個vectorint為數組元素的資料類型test為動态數組名
簡單的使用方法如下
vector<int>test;//建立一個vector
test.push_back(1);
test.push_back(2);//把1和2壓入vector這樣test[0]就是1,test[1]就是2
自己見到的執行個體
vector<vector<Point2f> > points; //定義一個二維數組
points[0].size(); //指第一行的列數
1 、基本操作
(1)頭檔案#include<vector>.
(2)建立vector對象vector<int> vec;
(3)尾部插入數字vec.push_back(a);
(4)使用下标通路元素cout<<vec[0]<<endl;記住下标是從0開始的。
(5)使用疊代器通路元素.
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;
(6)插入元素 vec.insert(vec.begin()+i,a);在第i+1個元素前面插入a;
(7)删除元素 vec.erase(vec.begin()+2);删除第3個元素
vec.erase(vec.begin()+i,vec.end()+j);删除區間[i,j-1];區間從0開始
(8)向量大小:vec.size();
(9)清空:vec.clear();
2、重要說明
vector的元素不僅僅可以是int,double,string,還可以是結構體但是要注意結構體要定義為全局的否則會出錯。
3、算法
(1) 使用reverse将元素翻轉需要頭檔案#include<algorithm>
reverse(vec.begin(),vec.end());将元素翻轉即逆序排列
(在vector中如果一個函數中需要兩個疊代器一般後一個都不包含)
(2)使用sort排序需要頭檔案#include<algorithm>
sort(vec.begin(),vec.end());(預設是按升序排列,即從小到大).
可以通過重寫排序比較函數按照降序比較如下
定義排序比較函數
bool Comp(const int &a,const int &b)
{
return a>b;
}
調用時:sort(vec.begin(),vec.end(),Comp)這樣就降序排序。
輸出Vector的中的元素
vector<float> vecClass;
int nSize = vecClass.size();
//列印vecClass,方法一
需要注意的是以方法一進行輸出時數組的下表必須保證是整數。
//列印vecClass,方法二
//列印vecClass,方法三輸出某一指定的數值時不友善
<b>二維數組的使用</b>