C++ STL中的容器预留空间和重新设置大小的区别
在C++ STL中,vector、deque、string等容器本质上是动态数组,它们可以随着数据的插入、删除自动改变大小。而为了提高程序效率,我们通常会事先预留一定的空间,可以使用reserve()函数实现。
但是,有时候我们需要更改已经存储的元素的数目,这时就需要用到resize()函数。相比之下,reserve()函数只是为容器预留空间,并不改变容器的大小,resize()则在预留空间的基础上直接修改容器的大小。
在具体使用时,我们需要根据不同的需求来选择合适的函数。下面通过一些例子来说明两者的区别:
reserve()函数的使用
reserve()函数用于在预留一定空间后,不改变容器的大小,仅仅将容器的容量调整为预分配的大小。这样可以减少不必要的内存申请和释放,从而提高程序效率。
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> nums;
nums.reserve(10);
cout << "capacity: " << nums.capacity() << endl;
for (int i = 0; i < 10; ++i) {
nums.push_back(i);
cout << "capacity: " << nums.capacity() <<
C++ STL的vector、deque、string等容器使用reserve()预留空间提高效率,不改变容器大小,而resize()能直接修改容器大小,增加或删除元素。reserve()仅调整容量,resize()则同时改变大小。根据需求选择合适函数提升程序性能。
订阅专栏 解锁全文
640

被折叠的 条评论
为什么被折叠?



