C++STL中vector的初始化


vector的初始化有很多方式,在N維初始化時還會一些容易出現錯誤的地方。下面進行總結

以下的總結均以int作為模板參數

一維vector的初始化

vector的構造函數通常來說有五種,如下:

  1. vector():創建一個空vector
  2. vector(int nSize):創建一個vector,元素個數為nSize
  3. vector(int nSize,const t& t):創建一個vector,元素個數為nSize,且值均為t
  4. vector(const vector&):復制構造函數
  5. vector(begin,end):復制[begin,end)區間內另一個數組的元素到vector中

注意第三條,如果傳入的是兩個參數的話,第一個參數是大小,第二是個初值。
下面為測試代碼以及運行結果:

#include<iostream>
#include<vector>
using namespace std;

int main(){
    ////////////////
    //構造函數部分
    ////////////////

    //空vector
    vector<int> vec1();
    cout<<"vec1[0] = "<<vec1[0]<<endl;
    //構造一行空vector
    vector<int> vec2(1);
    cout<<"vec2[0] = "<<vec2[0]<<endl;
    //構造一行指定值得vector
    vector<int> vec3(5,1);
    cout<<"vec3[0-5] = ";
    for(int i=0;i<5;i++){
        cout<<' '<<vec3[i]<<' ';
    }
    cout<<endl;
    //利用拷貝構造函數構造
    vector<int> vec4(vec3);
    cout<<"拷貝構造 vec4[0-5] = vec3[0-5] = ";
    for(int i=0;i<5;i++){
        cout<<' '<<vec4[i]<<' ';
    }
    cout<<endl;
    //復制前閉后開的一段到vector中
    int a[5]={1,2,3,4,5};
    vector<int> vec5(a,a+5);
    cout<<"vec5[0-5] = ";
    for(int i=0;i<5;i++){
        cout<<' '<<vec5[i]<<' ';
    }
    cout<<endl;
}

結果如下:

二維vector的初始化

先看怎么寫:

vector<vector <int> > ivec(m ,vector<int>(n));

簡單來說就是要利用上面的第三種方式,讓每個元素的初值是一個一維的vector。另外前面的模板參數里面也是一個嵌套的模式。

這里有一點要非常注意,有的編譯器在int后面的兩個> >之間一定要有一個空格,否則編譯器會報錯,因為它會認為>>是一個c++的運算符(有的不用這樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM