vector的reserve(),resize(),capacity()

本文通过示例代码详细介绍了 C++ 中 std::vector 的 reserve 和 resize 方法的使用方式及效果。reserve 方法用于预先分配内存以提高效率,resize 方法则用于调整容器大小并填充元素。

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

1:vetor<int> a;

a.reserve(100);

代表预留空间是100,capacity()的返回值也是就100;

vector功能和数组相似,capacity类似于我们通常预设定的数组的最大元素个数,如a[10],代表的就是a数组最多10个元素;

代码如下:

// vector::reserve
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int>::size_type sz;

  std::vector<int> foo;
  sz = foo.capacity();
  std::cout << "making foo grow:\n";
  for (int i=0; i<100; ++i) {
    foo.push_back(i);
    if (sz!=foo.capacity()) {
      sz = foo.capacity();
      std::cout << "capacity changed: " << sz << '\n';
    }
  }

  std::vector<int> bar;
  sz = bar.capacity();
  bar.reserve(100);   // this is the only difference with foo above
  std::cout << "making bar grow:\n";
  for (int i=0; i<100; ++i) {
    bar.push_back(i);
    if (sz!=bar.capacity()) {
      sz = bar.capacity();
      std::cout << "capacity changed: " << sz << '\n';
    }
  }
  return 0;
}
输出的结果:

making foo grow:

capacity changed: 1

capacity changed: 2

capacity changed: 4

capacity changed: 8

capacity changed: 16

capacity changed: 32

capacity changed: 64

capacity changed: 128

making bar grow:

capacity changed: 100


2:a.resize(n,m) or a.resize(n)

n代表的就是重新设置vector元素的多少

n大于你之前的size()时,会加上 n-size() 个元素值为m的元素(若m没有,就设置为默认值0);

n小于你之前的size()时,会删除 下标为 n~size()-1 的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值