zoukankan      html  css  js  c++  java
  • 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++的运算符(有的不用这样。

  • 相关阅读:
    LOJ6274 数字
    test20200415 看门人 和 WC2010 重建计划
    TJOI2018 Party 和 HDU4352 XHXJ's LIS
    LOJ3228 Tree Depth
    AGC026D Histogram Coloring
    LOJ3277 星座 和 BZOJ2616 PERIODNI
    LOJ2331 某位歌姬的故事 和 CF1327F AND Segments
    AGC024F Simple Subsequence Problem
    LOJ3278 收获
    LOJ3282 治疗计划
  • 原文地址:https://www.cnblogs.com/molinchn/p/13228054.html
Copyright © 2011-2022 走看看