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