C vector類學習筆記

2021-08-01 14:25:57 字數 3038 閱讀 5822

vector(向量): c++中的一種資料結構,確切的說是乙個類.它相當於乙個動態的陣列,當程式設計師無法知道自己需要的陣列的規模多大時,用其來解決問題可以達到最大節約空間的目的.

用法:

1.檔案包含:     

首先在程式開頭處加上#include以包含所需要的類檔案vector

還有一定要加上using namespace std;

2.變數宣告:

2.1 例:宣告乙個int向量以替代一維的陣列:vector a;(等於宣告了乙個int陣列a,大小沒有指定,可以動態的向裡面新增刪除)。

2.2 例:用vector代替二維陣列.其實只要宣告乙個一維陣列向量即可,而乙個陣列的名字其實代表的是它的首位址,所以只要宣告乙個位址的向量即可,即:vector a.同理想用向量代替三維陣列也是一樣,vector a;再往上面依此類推.

3.具體的用法以及函式呼叫:

3.1 如何得到向量中的元素?其用法和陣列一樣:

例如:vector a

int b = 5;

a.push_back(b);//該函式下面有詳解

cout<

1.push_back   在陣列的最後新增乙個資料

2.pop_back    去掉陣列的最後乙個資料 

3.at                得到編號位置的資料

4.begin           得到陣列頭的指標

5.end             得到陣列的最後乙個單元+1的指標

6.front        得到陣列頭的引用

7.back            得到陣列的最後乙個單元的引用

8.max_size     得到vector最大可以是多大

9.capacity       當前vector分配的大小

10.size           當前使用資料的大小

11.resize         改變當前使用資料的大小,如果它比當前使用的大,者填充預設值

12.reserve      改變當前vecotr所分配空間的大小

13.erase         刪除指標指向的資料項

14.clear          清空當前的vector

15.rbegin        將vector反轉後的開始指標返回(其實就是原來的end-1)

16.rend          將vector反轉構的結束指標返回(其實就是原來的begin-1)

17.empty        判斷vector是否為空

18.swap         與另乙個vector交換資料

3.2  詳細的函式實現功能:其中vectorc.

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()             返回指向容器最後乙個元素的迭代器

1. 標頭檔案

#include

2. vector宣告及初始化

vectorvec;        //宣告乙個int型向量

vectorvec(5); //宣告乙個初始大小為5的int向量

vectorvec(10, 1); //宣告乙個初始大小為10且值都是1的向量

vectorvec(tmp); //宣告並用tmp向量初始化vec向量

vectortmp(vec.begin(), vec.begin() + 3); //用向量vec的第0個到第2個值初始化tmp

int arr[5] = ;

vectorvec(arr, arr + 5); //將arr陣列的元素用於初始化vec向量

//這個主要是為了和vec.end()指標統一。

vectorvec(&arr[1], &arr[4]); //將arr[1]~arr[4]範圍內的元素作為vec的初始值

3. vector基本操作

(1). 容量

(2). 修改

(3)迭代器

(4)元素的訪問

(4)演算法

vector::iterator it;

for (it = vec.begin(); it != vec.end(); it++)

cout << *it << endl;

//或者

for (size_t i = 0; i < vec.size(); i++)

#include reverse(vec.begin(), vec.end());

#include sort(vec.begin(), vec.end()); //採用的是從小到大的排序

//如果想從大到小排序,可以採用上面反轉函式,也可以採用下面方法:

bool comp(const int& a, const int& b)

sort(vec.begin(), vec.end(), comp);

c++中vector的用法解析

c++中vector的用法詳解

C vector 類學習筆記

vector容器型別vector容器是乙個模板類,可以存放任何型別的物件 但必須是同一類物件 vector物件可以在執行時高效地新增元素,並且vector中元素是連續儲存的。vector的構造 函式原型 template explicit vector 預設建構函式,vector物件為空 expli...

C vector 類學習筆記

vector容器型別vector容器是乙個模板類,可以存放任何型別的物件 但必須是同一類物件 vector物件可以在執行時高效地新增元素,並且vector中元素是連續儲存的。vector的構造 函式原型 template explicit vector 預設建構函式,vector物件為空 expli...

C vector 類學習筆記

發表於 vector容器型別vector容器是乙個模板類,可以存放任何型別的物件 但必須是同一類物件 vector物件可以在執行時高效地新增元素,並且vector中元素是連續儲存的。vector的構造 函式原型 template explicit vector 預設建構函式,vector物件為空 e...