C++ STL 之 vector 的 capacity 和 size 属性区别
size 是当前 vector 容器真实占用的大小,也就是容器当前拥有多少个容器。
capacity 是指在发生 realloc 前能允许的最大元素数,即预分配的内存空间。
当然,这两个属性分别对应两个方法:resize() 和 reserve()。
使用 resize() 容器内的对象内存空间是真正存在的。
使用 reserve() 仅仅只是修改了 capacity 的值,容器内的对象并没有真实的内存空间(空间是"野"的)。
此时切记使用 [] 操作符访问容器内的对象,很可能出现数组越界的问题。
下面用例子进行说明:
#include<iostream>
#include<vector>
using std::vector;
int main(void)
{
vector<int> v;
std::cout<<"v.size() == "<< v.size()<<" v.capacity() = "<< v.capacity()<< std::endl;
v.reserve(10);
std::cout<<"v.size() == "<< v.size()<<" v.capacity() = "<< v.capacity()<< std::endl;
v.resize(10);
v.push_back(0);
std::cout<<"v.size() == "<< v.size()<<" v.capacity() = "<< v.capacity()<< std::endl;
return0;
}
运行结果为:(win 10 + VS2010)