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

来源:互联网 发布:云计算的历史 编辑:程序博客网 时间:2024/05/01 06:50

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 的元素。

0 0
原创粉丝点击