c++STL之vector简易使用
使用vector需要包含頭文件vector
構造函數
C++vectors 可以使用以下任意一種參數方式構造:
語法
解釋
- 無參數:構造一個空的vector
- 數量(num)和值(val):構造一個放入num個數值為val 的元素的vector
- vector(from):構造一個與vector from相同的vector
- 迭代器(start)和迭代器(end):構造一個初始值為[start,end)區間元素的vector(此處區間是左閉右開)。
舉例
下面這個實例構造了一個包含5個元素的vector,里面的值全是0.
運算符
語法:
v1 == v2 v1 != v2 v1 <= v2 v1 >= v2 v1 < v2 v1 > v2 v[]解釋
C++ vector能使用標準運算符:==,!=,<=,>=,<和>.
要訪問vector中某特定位置的元素可以使用 []操作符。
兩個vector相等,需要滿足:
vectors之間大小的比較是按照字典序
back() 函數 & front() 函數
語法
TYPE back();解釋
back()函數返回當前vector最末一個元素的引用
front()函數返回當前vector起始元素的引用
push_back() 函數 & pop_back() 函數
語法
void push_back(const TYPE &val); void pop_back();解釋
push_back()添加值為val的元素到當前vector末尾
pop_back() 函數刪除當前vector最末的一個元素
舉例
字符vector刪除末尾元素并打印
結果
ABCDEFGHI
ABCDEFGH
ABCDEFG
ABCDEF
ABCDE
ABCD
ABC
AB
A
最后
vector中使用sort()排序,默認順序為升序。
此例打印初始化時前10個元素,與排序后前10個元素
結果
100000 99999 99998 99997 99996 99995 99994 99993 99992 99991
1 2 3 4 5 6 7 8 9 10
二維數組初始化
借助二維數組,C++ 98 不支持 vector={…}列表初始化
//C++98 vector<vector<int> > grid(3);int a[2][3]={1,2,3,4,5,6};for(int i=0;i<2;i++)for(int j=0;j<2;j++)grid[i][j]=a[i][j];注意
二維vector的寫法
vector<vector > grid(3);
不要寫成vector<vector > grid;
后續無法進行遍歷,因為vector大小不知
二維數組遍歷
迭代器遍歷:使用兩個迭代器
vector<vector >::iterator iter;//第一層迭代器
vector::iterator it;//第二層迭代器
二維vector的大小
行grid.size()
列grid[0].size()
vector<vector > grid(5);
cout<<grid.size()<<endl; //行數
cout<<grid[0].size()<<endl;//列數
舉例,在一道簡單的動態規劃(DP)題解中使用。
int minPathSum(vector<vector<int>>& grid) {int m=grid.size();//行數int n=grid[0].size();//列數vector<vector<int>> f(m,vector<int>(n,0));//m*n兩維vector,全零//狀態f[0][0]=grid[0][0];for(int i=1;i<n;i++)f[0][i]+=grid[0][i]+f[0][i-1];f[0][0]=grid[0][0];for(int i=1;i<m;i++)f[i][0]+=grid[i][0]+f[i-1][0];//轉移for(int i=1;i<m;i++)for(int j=1;j<n;j++)f[i][j]=grid[i][j]+min(f[i-1][j],f[i][j-1]);return f[m-1][n-1];}總結
以上是生活随笔為你收集整理的c++STL之vector简易使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解放军空军工程大学在哪
- 下一篇: Matlab2018a求解一元二次方程