Vector C++ Tutorial

#include 
#include 
#include       
using namespace std;
class MyClass {
    int p;
public:
    MyClass() { p = 42; }
    MyClass( int q ) { p = q; }
    int getp() const { return p; }
    void changeState( int pp ) { p = pp; }
};
bool operator<( const MyClass& x1, const MyClass& x2 ) {  
       return x1.getp() < x2.getp();
}
bool operator==( const MyClass& x1, const MyClass& x2 ) { 
     return x1.getp() == x2.getp();
}
void print( vector );
int main()
{
     vector vec;                           
     MyClass x1( 2 );                               
     MyClass x2( 3 );                               
     MyClass x3( 5 );                               
     vec.push_back( x1 );
     vec.push_back( x3 );
     vec.push_back( x2 );
     print( vec );                  
     x2.changeState( 1000 );                  
     print( vec);                   
     //vector elements initialized by MyClass's no-arg      constructor:
     vector vec_2( 5 );          
     print( vec_2 );                
     vec_2.resize( 7 );             
     print( vec_2 );                
     //uninitialized increase in the vector capacity:
     vec_2.reserve( 10 );           
     cout << vec_2.capacity() << endl;
     print ( vec_2 );             
                                  
     cout << vec_2[ 8 ].getp() << endl;   
     vec_2[0] = MyClass(12);
     vec_2[1] = MyClass(36);
     vec_2[2] = MyClass(3);
     vec_2[3] = MyClass(56);
     vec_2[4] = MyClass(2);
     sort( vec_2.begin(), vec_2.end() );  
     print( vec_2 );
     vec_2.clear();
     print( vec_2 );
     cout << vec_2.capacity() << endl;
     return 0;
}
void print( vector v ) {
     cout << "\nvector size is: " << v.size() << endl;
     vector::iterator p = v.begin();
     while ( p != v.end() )
          cout << (*p++).getp() << "  ";
     cout << endl << endl;
}