C++ STL容器vector篇(二) vector容器的构造函数与赋值操作

795 阅读1分钟

构造函数

构造函数的调用有四种方式:

  1. 默认构造函数(无参构造);
  2. 左闭右开区间元素拷贝给容器本身;
  3. 构造函数将n个elem拷贝给容器本身;
  4. 拷贝构造函数

代码如下:

#include <iostream>
#include <vector>

using namespace std;

void printV(vector<int> &v)
{
    for (vector<int>::iterator it = v.begin(); it < v.end(); ++it)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
}

void test1()
{
    // 1. 默认构造函数(无参构造)
    vector<int> v1;
    for (int i = 0;i<5;i++)
    {
        v1.push_back(i*2+1);
    }
    printV(v1);
    // 1 3 5 7 9 

    // 2. 左闭右开区间元素拷贝给容器本身
    vector<int> v2(v1.begin()+1, v1.end()-1);
    printV(v2);
    // 3 5 7 

    // 3. 构造函数将n个elem拷贝给容器本身
    vector<int> v3(10, 2);
    printV(v3);
    // 2 2 2 2 2 2 2 2 2 2 

    // 4. 拷贝构造函数
    vector<int> v4(v2);
    printV(v4);
    // 3 5 7 
}

int main(int argc, char const *argv[])
{
    test1();
    return 0;
}

赋值操作

vector数组赋值主要采用的方式是assign()函数,

#include <iostream>
#include <vector>

using namespace std;

void printV(vector<int> &v)
{
    for (vector<int>::iterator it = v.begin(); it < v.end(); ++it)
    {
        cout << *it << " ";
    }
    cout << endl;
}

void test1()
{
    vector<int> v1;
    for (int i = 0; i < 5; i++)
    {
        v1.push_back(i * 2 + 1);
    }
    printV(v1);
    // 1 3 5 7 9 

    // 1. 直接赋值
    vector<int> v2;
    v2 = v1;
    printV(v2);
    // 1 3 5 7 9 

    // 2. assign()函数赋值, 左闭右开区间
    vector<int> v3;
    v3.assign(v1.begin() + 2, v1.end());
    printV(v3);
    // 5 7 9 

    // 3. n个elem, assign()函数的重载版本
    vector<int> v4;
    v4.assign(20, 3);
    printV(v4);
    // 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
}

int main(int argc, char const *argv[])
{
    test1();
    return 0;
}