vector 的定义如下(deque\list 类似):
namespace std { template <class T, class Allocator = allocator<T> > class vector; }
第二个参数是用来定义内存模型,缺省使用C++标准库提供的 allocator。
其 capacity() 方法返回 vector 实际能够容纳的元素数量,如果超越这个数量,vector 就有必要重新配置内部存储器,和 vector 元素相关的 references\pointers\iterators 都会失效,另外内存重新分配也很耗时间。所以可以使用 reserve() 来预设一定的容量,避免一再重新配置内存。
set 的定义如下(multiset 类似):
namespace std { template<class T, class Compare = less<T>, class Allocator = allocator<T> > class set; }
map 的定义如下(multimap 类似):
namespace std { template<class Key, class T, class Compare = less<Key>, class Allocator = allocator<pair<const Key,T> > > class map; }