/* * Size and Capacity * */ template <class T, class A = allocator<T> > class vector { public: // ... // capacity: size_type size() const; // number of elements bool empty() const { return size()==0; } size_type max_size() const; // size of the largest possible vector void resize(size_type sz, T val = T()); // added elements initialized by val size_type capacity() const; // size of the memory (in number of elements) allocated void reserve(size_type n); // make room for a total of n elements; don't initialize // throw a length_error if n>max_size() // ... }; /* * Usage of size and capacity * */ class Histogram { vector<int> count; public: Histogram(int h) : count(max(h,8)) {} void record(int i); // ... }; void Histogram::record(int i) { if (i<0) i = 0; if (count.size()<=i) count.resize(i+i); // make lots of room count[i]++; }