size()返回的是容器内实际存储的元素的数目。
resize()会在容器的尾部添加或删除一些元素来调整内存,使容器达到指定大小。resize(n)当n大于当前元素个数是,会用T()填充,resize(n,x),会用x来填充。
这2个函数可用于list,deque和vector
capacity()指出了现在实际分配的空间,
reserve可能会使容器的内部缓冲区扩大。
注意的是,reserve()只是改变容器内部缓冲区的大小,并不影响size;也就是说reserve并没有改变实际分配的元素的数目,如
Vector<int> v;
v.reserve(10);
v[8] = 8; //这是错误的
因为现在v.size()为0,容器里没有容纳任何元素,可以v.resize(10);或干脆用v.push_back(x);
上面是我的一些理解,有不对的欢迎指正。