admin管理员组

文章数量:1611933

size:大小----resize重新确定大小

capacity:容量----reserve重新分配空间

size说明容器中目前实际存在多少元素,resize会在容器的尾部添加或者删除一些元素,来调整容器的大小使其达到指定的大小;

capcity说明至少添加多少元素才会使容器重新分配内存,而reserve在必要的时候会使容器内部缓冲区扩充至一个更大的容量,以确保至少能满足你所指出的空间大小。

vector<int> v;
v.reserve(2);
v[0]=1;
v[1]=2;
在本例中v.reserve(2)只是确保v中有空间能够放下至少两个元素,但是并没有真的为其分配地址空间,对v[0]、v[1]进行赋值是没有意义的,这些内存空间此时可能仍是‘野的’,代码并不能保证正常工作,如果v.resize(2)则可以实现预想的效果。解决这个问题可以使用v.push_back(1)和v.push_back(2)。

本文参考《C++编程剖析》Herb Sutter 著 刘未鹏 译

本文标签: 区别sizeVectorresizereserve