📜  用零填充向量 c++ (1)

📅  最后修改于: 2023-12-03 15:11:19.829000             🧑  作者: Mango

用零填充向量

在C++中,向量是一种非常有用的数据结构,它可以用于存储和操作一系列值。当你需要在一个向量中添加新的元素时,C++会自动为你分配额外的内存来存储这些新的元素。然而,当你访问一个向量的元素时,如果该元素的位置超出了向量的大小,C++会抛出一个异常。因此,有时候我们需要在向量中添加一些空的元素,以便在后续的操作中避免这种异常。这就是用零填充向量的作用。

使用 vector.resize() 方法

向量 vector 提供了 resize() 方法,可以用来改变向量的大小。当你调用 resize(n) 方法时,向量的大小会被改变为 n,如果 n 大于当前向量的大小,那么新添加的元素会被自动初始化为零。下面是一个示例:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    // 创建一个向量
    vector<int> vec;

    // 向向量中添加元素
    vec.push_back(10);
    vec.push_back(20);
    vec.push_back(30);
    vec.push_back(40);

    // 输出向量的大小
    cout << "vector size = " << vec.size() << endl;

    // 改变向量的大小
    vec.resize(6);

    // 输出向量的大小
    cout << "vector size = " << vec.size() << endl;

    // 输出向量中的元素
    for (int i = 0; i < vec.size(); i++)
    {
        cout << vec[i] << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:

vector size = 4
vector size = 6
10 20 30 40 0 0
使用 vector.assign() 方法

向量 vector 还提供了 assign() 方法,可以用来将一个向量赋值给另一个向量,并且可以指定赋值的元素个数。当你调用 assign(n, val) 方法时,向量的大小会被改变为 n,并且所有元素会被赋值为 val。下面是一个示例:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    // 创建一个向量
    vector<int> vec1;

    // 向向量中添加元素
    vec1.push_back(10);
    vec1.push_back(20);
    vec1.push_back(30);
    vec1.push_back(40);

    // 创建一个新的向量
    vector<int> vec2;

    // 将向量 vec1 赋值给向量 vec2,并且指定元素个数为 6
    vec2.assign(6, 0);

    // 将向量 vec1 中的元素复制到向量 vec2 中
    for (int i = 0; i < vec1.size(); i++)
    {
        vec2[i] = vec1[i];
    }

    // 输出向量的大小
    cout << "vector size = " << vec2.size() << endl;

    // 输出向量中的元素
    for (int i = 0; i < vec2.size(); i++)
    {
        cout << vec2[i] << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:

vector size = 6
10 20 30 40 0 0
使用 fill() 函数

C++ 标准库中的 头文件中提供了 fill() 函数,可以用来将指定范围内的元素赋值为指定的值。当你调用 fill(vec.begin(), vec.end(), val) 函数时,会将向量 vec 中的所有元素都赋值为 val。下面是一个示例:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    // 创建一个向量
    vector<int> vec;

    // 向向量中添加元素
    vec.push_back(10);
    vec.push_back(20);
    vec.push_back(30);
    vec.push_back(40);

    // 输出向量的大小
    cout << "vector size = " << vec.size() << endl;

    // 改变向量的大小
    vec.resize(6);

    // 将向量中的所有元素都赋值为零
    fill(vec.begin() + 4, vec.end(), 0);

    // 输出向量的大小
    cout << "vector size = " << vec.size() << endl;

    // 输出向量中的元素
    for (int i = 0; i < vec.size(); i++)
    {
        cout << vec[i] << " ";
    }
    cout << endl;

    return 0;
}

输出结果为:

vector size = 4
vector size = 6
10 20 30 40 0 0

以上三种方法都可以用来用零填充向量,具体选择哪一个方法要根据你的实际需求来决定。