C++ STL中的容器预留空间和重新设置大小的区别

411 篇文章 ¥29.90 ¥99.00
C++ STL的vector、deque、string等容器使用reserve()预留空间提高效率,不改变容器大小,而resize()能直接修改容器大小,增加或删除元素。reserve()仅调整容量,resize()则同时改变大小。根据需求选择合适函数提升程序性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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() << 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值