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 ...