Mega Code Archive

 
Categories / C++ / Vector
 

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() ); }