vector是C++標準模板庫中的部分內容,它是一個多功能的,能夠操作多種數據結構和算法的模板類和函數庫。vector之所以被認爲是一個容器,是因爲它能夠像容器一樣存放各種類型的對象,簡單地說,vector是一個能夠存放任意類型的動態數組,能夠增加和壓縮數據。vector可以存放任意類型的數據:int,long,char,結構體等多種數據類型。
1.在使用vcetor前,需要包含頭文件:
#include <vector>
2. vector屬於std命名空間,因此需要通過命名空間來限定:std::vector<int> ivec;
也可以定義全局的命名空間:using namespace std;
vector<int> ivec
3. 定義和初始化vector有四種方式:
vector<T> v1; 保存類型爲T的對象。默認構造函數,變量v1爲空
vector<T> v2(v1); v2是v1的副本
vector<T> v3(n, i); v3包含n個值爲i的元素
vector<T> v4(n); v4含有值初始化的元素的n個副本。
4. 向vector添加一個數據: vector添加數據的缺省方法是push_back()。push_back()函數表示將數據添加到vector的尾部,並按需要來分配內存。例如:向vector<int>中依次添加0,1,2,...... ,9共10個數據,注意:數據都是從尾部依次插入。需要如下編寫代碼:
for(vector<int>::size_type i= 0;i<ivec.size(); i++)
ivec.push_back(i) ;
5. 使用下表操作訪問vector元素:
for(vector<int>::size_type i= 0;i<ivec.size(); i++)
{
ivecData = ivec[i] ;
cout<<"ivec = "<<ivec[i] <<endl;
}
下標操作可以輸出vector的value值.
6.刪除元素操作:
ivec.erase(ivec.begin());// 刪除第一個元素
ivec.erase(ivec.begin()+2);//刪除第3個元素
ivec.erase(ivec.begin()+i,ivec.end()+j);//刪除區間[i,j-1];區間從0開始
ivec.pop_back(); //刪除最後一行數據
7. vector排序操作:
sort(vec.begin(),vec.end());//默認是按升序排列,即從小到大.
bool Comp(const int &a,const int &b)
{
return a>b;
}
sort(vec.begin(),vec.end(),Comp) //降序排序
8.vector 清空:
ivec.clear(); //清空內容,但是的內存空間還在
vector<int>(ivec).swap(ivec); //清空vector並最小化它的內存空間
9.vector作爲函數的形參進行傳遞:
直接傳遞vector類型的參數:
#include <iostream>
#include <vector>
using namespace std;
void cv(vector<int> a)
{
vector<int>::iterator itp=a.begin();
while (itp!=a.end() )
cout<<*itp++<<endl;
}
int main(void)
{
vector<int> b;
b.push_back(6);
b.push_back(5);
b.push_back(7);
cv(b);
return 0;
}
傳遞迭代器:
#include <iostream>
#include <vector>
using namespace std;
void cv(vector<int>::iterator begin,vector<int>::iterator end)
{
while (begin!=end )
cout<<*begin++<<endl;
}
int main(void)
{
vector<int> b;
b.push_back(6);
b.push_back(5);
b.push_back(7);
cv(b.begin(),b.end() );
return 0;
}