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