vector中的resize()和reserve()

来源:互联网 发布:整理文件的软件 编辑:程序博客网 时间:2024/05/17 23:41
 

resize函数更改size成员的大小,size表示目前容器中实际的元素个数。

reserve函数更改capacity成员的大小,capacity成员表示容器总共可以存储的容器个数。

比如要将vector A的一部分元素筛选出来拷贝到vector B,(假设B是新定义的vector)此时可以用copy_if函数。

但是vector B空间不够,该怎么办呢?

此时应该用reserve函数来改变其容量。

为什么不用resize?其实resize也可以达到同样的效果。但resize的副作用是会调用元素类型的默认构造函数来实际构造对象将vector填满。

来看一段测试代码:

void testReserve()
{
  cout << "test Reserve" << endl;
  vector<mClass> vec;
  vec.reserve(5);
}
void testResize()
{
  cout << "test Resize" << endl;
  vector<mClass> vec;
  vec.resize(5);
}
int main()
{
  testReserve();
  testResize();
  return 0;
}

程序执行结果:


PS:(1)对于string也同样奏效。

        (2)reserve成员只是更改了容器的容量,但并不意味着里面有实际的元素被存储。使用下标方式访问时要注意。

                                             
0 0
原创粉丝点击