c 中容器vector的用法整理

2021-07-26 12:22:48 字數 2835 閱讀 8782

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

4.vector 記憶體管理成員函式的行為測試

c++ stl的vector使用非常廣泛,但是對其記憶體的管理模型一直有多種猜測,下面用例項**測試來了解其記憶體管理方式,測試**如下:

#include

#include

using namespace std;

int main()

5.vector的其他成員函式

c.assign(beg,end):將[beg; end)區間中的資料賦值給c。

c.assign(n,elem):將n個elem的拷貝賦值給c。

c.at(idx):傳回索引idx所指的資料,如果idx越界,丟擲out_of_range。

c.back():傳回最後乙個資料,不檢查這個資料是否存在。

c.front():傳回地乙個資料。

get_allocator:使用建構函式返回乙個拷貝。

c.rbegin():傳回乙個逆向佇列的第乙個資料。

c.~ vector ():銷毀所有資料,釋放記憶體。   

6.備註:在用vector的過程中的一些問題,特此列出討論:

1)vector a;

int  b = 5;

a.push_back(b);

此時若對b另外賦值時不會影響a[0]的值

2)vector a;

int *b;

b= new int[4];

b[0]=0;

b[1]=1;

b[2]=2;

a.push_back(b);

delete b;          //釋放b的位址空間

for(int i=0 ; i <3 ; i++) {

cout<

此時輸出的值並不是一開始b陣列初始化的值,而是一些無法預計的值.

分析:根據1) 2)的結果,可以想到,在1)中,  往a向量中壓入的是b的值,即a[0]=b,此時a[0]和b是儲存在兩個不同的位址中的.因此改變b的值不會影響a[0];而在2)中,因為是把乙個位址(指標)壓入向量a,即a[0]=b,因此釋放了b的位址也就釋放了a[0]的位址,因此a[0]陣列中存放的數值也就不得而知了.

C 中vector容器的用法

1 標頭檔案 include.2 建立vector物件,vector vec 3 尾部插入數字 vec.push back a 4 使用下標訪問元素,cout vector iterator it for it vec.begin it vec.end it cout it 6 插入元素 vec.i...

C 中 vector(容器)的用法

vector 向量 c 中的一種資料結構,確切的說是乙個類.它相當於乙個動態的陣列,當程式設計師無法知道自己需要的陣列的規模多大時,用其來解決問題可以達到最大節約空間的目的.一.用法 1.檔案包含 首先在程式開頭處加上 include以包含所需要的類檔案vector 還有一定要加上using nam...

C 中vector容器的用法

在c 中,vector是乙個十分有用的容器,下面對這個容器做一下總結。1 基本操作 1 標頭檔案 include.2 建立vector物件,vector vec 3 尾部插入數字 vec.push back a 4 使用下標訪問元素,cout 5 使用迭代器訪問元素.vector iterator ...