一、vector::resize()简介
vector::resize()
函数是C++ STL中vector容器中的一个非常常用的函数之一,它可以改变vector的大小,使其可以存储更多或更少的元素。
下面我们会从以下几个方面对vector::resize()
函数做详细的阐述。
二、vector::resize()函数参数介绍
vector::resize()
函数有两个参数,其中第一个参数为要改变的vector的大小,第二个参数为一个可选的默认值,如果指定了第二个参数,则在向vector中添加元素时,会将这个默认值插入到新分配的空间中,如果没有指定,则默认使用元素类型的默认构造函数,其中第一参数是必须的,第二个参数是可选的。
void resize(size_type count, T value = {});
三、vector::resize()函数用法
1、在vector中添加元素
使用vector::resize()
函数可以在向vector中添加元素时实现自动扩容的功能,如下所示:
//代码示例一
#include
#include
int main() {
std::vector
nums;
nums.resize(10); // 将向量的大小改为10
std::cout << "nums size is: " << nums.size() << std::endl; // 输出10
nums[9] = 100; // 向向量的最后一个元素中插入值100
for (int i : nums)
std::cout << i << '\n'; // 输出0 0 0 0 0 0 0 0 0 100
return 0;
}
上述代码中,vector对象nums扩容至10个元素,并插入了一个值为100的元素。
vector::resize()
函数还可以在向vector中加入元素时缩小vector的容量,如下所示:
//代码示例二
#include
#include
int main() {
std::vector
nums{1, 2, 3, 4, 5};
nums.resize(3);
std::cout << "nums size is: " << nums.size() << std::endl; // 输出3
for (int i : nums)
std::cout << i << '\n'; // 输出1 2 3
return 0;
}
上述代码中,vector对象nums扩容至3个元素,会将nums中含有4和5的元素删除,只保留前三个元素。
2、在vector中添加默认值
在使用vector::resize()
函数时,可以使用第二个函数参数为vector中新增的元素指定默认值,如下所示:
//代码示例三
#include
#include
int main() {
std::vector
nums;
nums.resize(10, 5); // 将vector扩容至10并填充5
for (int i : nums)
std::cout << i << '\n'; // 输出5 5 5 5 5 5 5 5 5 5
return 0;
}
上述代码中,nums.resize(10, 5)
将向量的大小改为10,并用数字5填充了前10个元素。
四、vector::resize()函数的局限性
使用vector::resize()
函数时需要注意以下几个问题:
1、vector::resize()
函数会破坏向量中原有元素之间的相对关系,因此对于需要保持相相对关系的向量,不建议使用该函数。
2、对于使用vector::resize()
函数扩容的vector,其中新增加的元素会使用默认构造函数进行初始化,这可能不是程序员想要的行为。
3、对于使用vector::resize()
函数减小vector容量的情况,其中被删除的元素也会调用其析构函数,这可能会对性能产生不良影响。
五、总结
本文从vector::resize()函数的参数和用法等多个方面进行了详细的介绍,使读者更好地理解这个函数的作用和使用方法。但同时本文也提到了该函数的三个局限性,因此在具体使用该函数时,需要根据具体情况权衡利弊。