Requirements for Classes Used in Vectors
#include <iostream> #include <vector> using namespace std; template <class T> void print(T& c){ for( typename T::iterator i = c.begin(); i != c.end(); i++ ){ std::cout << *i << endl; } } class Item { public: Item(); ~Item(); Item( const Item& ); Item& operator=( const Item& ); private: static int default_constructor_calls_; static int assignment_calls_; static int copy_constructor_calls_; static int destructor_calls_; }; inline Item::Item() { cout << "\nCall " << ++default_constructor_calls_ << " of default constructor"; } inline Item::Item( const Item& ) { cout << "\nCall " << ++copy_constructor_calls_ << " of copy constructor"; } inline Item::~Item() { cout << "\nCall " << ++destructor_calls_ << " of destructor"; } inline Item& Item::operator=( const Item& ) { cout << "\nCall " << ++assignment_calls_ << " of assignment operator"; return *this; } int Item::default_constructor_calls_ = 0; int Item::assignment_calls_ = 0; int Item::copy_constructor_calls_ = 0; int Item::destructor_calls_ = 0; int main( ) { vector<Item> d( 2 ); d.resize( d.capacity() ); d.push_back( Item() ); d.erase( d.begin() ); }