C++中vector 和 Mat 的使用舉例
阿新 • • 發佈:2019-01-05
第一次使用vector,感覺網上講的太亂了,整理一下。
vector 是 C++中的一種資料結構,確切的說是一個類.它相當於一個動態的陣列,當程式設計師無法知道自己需要的陣列的規模多大時,用其來解決問題可以達到最大節約空間的目的.
用法:
1.檔案包含:
首先在程式開頭處加上#include以包含所需要的類檔案vector
還有一定要加上using namespace std;
2.變數宣告:
2.1 例:宣告一個int向量以替代一維的陣列:vector a;(等於聲明瞭一個int陣列a[],大小沒有指定,可以動態的向裡面新增刪除)。
vector 建立舉例:
1 基本操作
(1)標頭檔案#include<vector>.
(2)建立vector物件,vector<int> vec;
(3)尾部插入數字:vec.push_back(a);
(4)使用下標訪問元素,cout<<vec[0]<<endl;記住下標是從0開始的。
(5)使用迭代器訪問元素.
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it<<endl;(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1 個元素前面插入a;
(6)刪除元素: vec.erase(vec.begin()+2);刪除第3個元素
vec.erase(vec.begin()+i,vec.end()+j);刪除區間[i,j-1];區間從0開始
(7)向量大小:vec.size();
(8)清空:vec.c
要明白vector 的使用範圍是很靈活的,可以用來儲存 int, point, rect, struct 等型別。
vector<int> vec; //int 表示儲存資料型別,vec 為變數名;
vector<point> vec; //建立儲存point型別的容器
vector<Rect> vec; //建立儲存Rect型別的容器種vector宣告
vector<int> v1; //定義空的
vector<int> v2(10); //產生大小為10的vector
vector<int>v3(10,-1); //產生大小為10,並且每個元素都是-1的vector
vector<int>v4(v3); //用一個vector產生一個vecotr
int arr[5]={1,2,3,4,5};
vector<int>v5(arr,&arr[5]); //以區間[beg;end)做為初值的vectoror 的使用不用手動釋放,系統自動釋放
3 如何得到向量中的元素?其用法和陣列一樣:
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.1 詳細的函式實現功能:其中vector<int> c.
c.clear() 移除容器中所有資料。
c.empty() 判斷容器是否為空。
c.erase(pos) 刪除pos位置的資料
c.front() 傳回第一個資料。
c.insert(pos,elem) 在pos位置插入一個elem拷貝
c.pop_back() 刪除最後一個數據。
c.push_back(elem) 在尾部加入一個數據。
c.resize(num) 重新設定該容器的大小
c.size() 回容器中實際資料的個數。
c.begin() 返回指向容器第一個元素的迭代器
c.end() 返回指向容器最後一個元素的迭代器
“`