C++中vector用法

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;
}









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章