STL::vector講解

1、概述算法

 

vector是C++標準模板庫中的部份內容,它是一個多功能的,可以操做多種數據結構和算法的模板類和函數庫。vector是一個容器,它可以存放各類類型的對象,簡單地說,vector是一個可以存聽任意類型的動態數組,能夠動態改變大小。數組

 

例如:微信

 

// c語言風格數據結構

int myHouse[100] ;數據結構和算法

 

// 採用vector函數

vector<int> vecMyHouse(100); 學習

 

當如上定義後,vecMyHouse就能夠存放100個int型的數據了。spa

 

1. 它能夠像普通數組同樣訪問.net

 

eg:  vecMyHouse[50] = 1024;指針

 

2. 你能夠順序地向容器中填充數據

 

eg:int i =0 ; 

     for( ;i< 25; i++ )

     {

            vecMyHouse.push_back(i);

     }

         

3. 它還能夠動態地改變它的大小,經過下面這條語句實現

 

// 將容器的大小改成400,這樣容器中就能夠容納400個int型數據了

eg: vecMyHouse.resize(400);

 

4. 你也能夠在容器中裝入自定義的數據類型

 

eg:

 

// 自定義一個class

class Cmyclass

{

};

 

// 定義一個存放class的容器

vector<Cmyclass> vecMyHouse; 

 

 

5. 你能夠在定義容器時爲它賦初值

 

// 定義一個容納100個int型數據的容器,初值賦爲0

vector<int> vecMyHouse(100,0); 

 

6. 你能夠把一個容器的對象賦值給另一個容器

 

eg:

 

// 定義一個容納100個int型數據的容器,初值賦爲0

vector<int> vecMyHouse(100,0); 

 

//    定義一個新的容器,內容與上述容器同樣

vector<int> myVec ;

myVec = vecMyHouse;

 

 

2、 以上是vector容器的簡單介紹,下面將詳細介紹它的其餘功能:

 

1. 爲了使用vector,必須在你的頭文件中包含下面的代碼:

#include <vector>

 

2. vector屬於std命名域的,所以須要經過命名限定,能夠在文件開頭加上

using std::vector;

或者

using namespace std;

或者直接在使用vector的代碼前加前綴

eg: 

std::vector<int> myHouse;

 

3. vector提供以下函數或操做:

 

下面列舉了部分經常使用的功能

 

// 定義一個vector

std::vector<int> c;

 

// 可使用的功能

c.clear()                   移除容器中全部數據。

c.empty()                 判斷容器是否爲空。

c.erase(pos)             刪除pos位置的數據

c.erase(beg,end)       刪除[beg,end)區間的數據

c.front()                  傳回第一個數據。

c.insert(pos,elem)      在pos位置插入一個elem拷貝

c.pop_back()            刪除最後一個數據。

c.push_back(elem)     在尾部加入一個數據。

c.resize(num)            從新設置該容器的大小

c.size()                    回容器中實際數據的個數。

c.begin()                  返回指向容器第一個元素的迭代器

c.end()                    返回指向容器最後一個元素的迭代器

 

3、下面描述一下什麼是迭代器

 

迭代器至關於指針,例如:

 

// 對於變量而言,使用指針指向對應的變量

// 之後就可使用 * 加指針來操做該變量了

int a = 10;

int *p;

p = &a;

 

// 使用指針操做該變量

eg: *p = 11; // 操做後a變爲 11

 

// 對於容器,使用迭代器操做容器中對應位置的值

// 當迭代器指向了容器中的某位置,則可使用 * 加迭代器操做該位置了

 

// 定義一個vector

std::vector<int> myVec;

 

//添加10個元素

for(int j =0 ; j<10 ; j++)

{

  myVec.push_back(j);

}

 

// 定義一個迭代器

std::vector<int>::iterator p;

 

// 指向容器的首個元素

p = myVec.begin();

 

// 移動到下一個元素

p ++;

 

// 修改該元素賦值

*p = 20 ;    //< 則myVec容器中的第二個值被修改成了20

 

// 循環掃描迭代器,改變全部的值

p = myVec.begin();

 

for( ; p!= myVec.end(); p++ )

{

    *p = 50;

}

 

以上簡單講述了vector的用法,僅供入門之用。

 

結束語

 

免費學習更多精品課程,登陸樂搏學院官網http://h.learnbo.cn/

或關注咱們的官方微博微信,還有更多驚喜哦~

 

本文出自 「Jhuster的專欄」 博客,請務必保留此出處http://ticktick.blog.51cto.com/823160/190007

相關文章
相關標籤/搜索