📅  最后修改于: 2023-12-03 15:11:19.829000             🧑  作者: Mango
在C++中,向量是一种非常有用的数据结构,它可以用于存储和操作一系列值。当你需要在一个向量中添加新的元素时,C++会自动为你分配额外的内存来存储这些新的元素。然而,当你访问一个向量的元素时,如果该元素的位置超出了向量的大小,C++会抛出一个异常。因此,有时候我们需要在向量中添加一些空的元素,以便在后续的操作中避免这种异常。这就是用零填充向量的作用。
向量 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() 方法,可以用来将一个向量赋值给另一个向量,并且可以指定赋值的元素个数。当你调用 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
C++ 标准库中的
#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
以上三种方法都可以用来用零填充向量,具体选择哪一个方法要根据你的实际需求来决定。