日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++STL之vector简易使用

發(fā)布時間:2025/4/5 c/c++ 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++STL之vector简易使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用vector需要包含頭文件vector

構(gòu)造函數(shù)

C++vectors 可以使用以下任意一種參數(shù)方式構(gòu)造:
語法

vector(); vector(size_type num, const TYPE &val); vector(const vector &from); vector(input_iterator start,input_iterator end);

解釋

  • 無參數(shù):構(gòu)造一個空的vector
  • 數(shù)量(num)和值(val):構(gòu)造一個放入num個數(shù)值為val 的元素的vector
  • vector(from):構(gòu)造一個與vector from相同的vector
  • 迭代器(start)和迭代器(end):構(gòu)造一個初始值為[start,end)區(qū)間元素的vector(此處區(qū)間是左閉右開)。

舉例
下面這個實例構(gòu)造了一個包含5個元素的vector,里面的值全是0.

vector<int> v(5,0);

運算符

語法:

v1 == v2 v1 != v2 v1 <= v2 v1 >= v2 v1 < v2 v1 > v2 v[]

解釋
C++ vector能使用標準運算符:==,!=,<=,>=,<和>.
要訪問vector中某特定位置的元素可以使用 []操作符。

兩個vector相等,需要滿足:

  • 它們具有相同的容量
  • 所有相同位置的元素相等
  • vectors之間大小的比較是按照字典序

    back() 函數(shù) & front() 函數(shù)

    語法

    TYPE back();

    解釋
    back()函數(shù)返回當前vector最末一個元素的引用
    front()函數(shù)返回當前vector起始元素的引用

    vector<int> v;//構(gòu)造 for(int i=0;i<10;i++)v.push_back(i); cout<<"the first element is: "<<v.front()<<endl;cout<<"the last element is:" <<v.back()<<endl;

    push_back() 函數(shù) & pop_back() 函數(shù)

    語法

    void push_back(const TYPE &val); void pop_back();

    解釋
    push_back()添加值為val的元素到當前vector末尾
    pop_back() 函數(shù)刪除當前vector最末的一個元素

    舉例
    字符vector刪除末尾元素并打印

    vector<char> alphaVector;for(int i=0;i<10;i++)alphaVector.push_back(i+65);//添加元素 int size=alphaVector.size();vector<char>:: iterator Iter;//實例化迭代器 for(int i=0;i<size;i++){alphaVector.pop_back();//刪除元素 for(Iter=alphaVector.begin();Iter!=alphaVector.end();Iter++) cout<<*Iter;cout<<endl;}

    結(jié)果

    ABCDEFGHI
    ABCDEFGH
    ABCDEFG
    ABCDEF
    ABCDE
    ABCD
    ABC
    AB
    A

    最后
    vector中使用sort()排序,默認順序為升序。
    此例打印初始化時前10個元素,與排序后前10個元素

    #include<iostream> #include<algorithm> #include<vector> const int maxn=1e5;//10w規(guī)模 using namespace std;int main() {vector<int> v;//構(gòu)造 for(int i=0;i<maxn;i++)//初始化v.push_back(maxn-i);for(int i=0;i<10;i++)//打印前10個元素cout<<v[i]<<" "; cout<<endl;sort(v.begin(),v.end());//從小到大排序for(int i=0;i<10;i++)//排序后打印前10個元素cout<<v[i]<<" "; }

    結(jié)果

    100000 99999 99998 99997 99996 99995 99994 99993 99992 99991
    1 2 3 4 5 6 7 8 9 10

    二維數(shù)組初始化

    借助二維數(shù)組,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;
    后續(xù)無法進行遍歷,因為vector大小不知

    二維數(shù)組遍歷

    迭代器遍歷:使用兩個迭代器

    vector<vector >::iterator iter;//第一層迭代器
    vector::iterator it;//第二層迭代器

    //vector二維數(shù)組的遍歷void byIterator(vector<vector<int> >& vec){vector<vector<int> >::iterator iter;//第一層迭代器vector<int>::iterator it;//第二層迭代器vector<int> vec_temp;//臨時變量,存儲vectorfor(iter=vec.begin();iter!=vec.end();iter++){vec_temp=*iter;for(it=vec_temp.begin();it!=vec_temp.end();it++)cout<<*it<<" ";cout<<endl;} }

    二維vector的大小

    行g(shù)rid.size()
    列g(shù)rid[0].size()

    vector<vector > grid(5);
    cout<<grid.size()<<endl; //行數(shù)
    cout<<grid[0].size()<<endl;//列數(shù)

    舉例,在一道簡單的動態(tài)規(guī)劃(DP)題解中使用。

    int minPathSum(vector<vector<int>>& grid) {int m=grid.size();//行數(shù)int n=grid[0].size();//列數(shù)vector<vector<int>> f(m,vector<int>(n,0));//m*n兩維vector,全零//狀態(tài)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];//轉(zhuǎn)移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];}

    總結(jié)

    以上是生活随笔為你收集整理的c++STL之vector简易使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。