Vector C++ Tutorial

#include 
#include 
#include 
using namespace std;
class MyClass {
public:
  unsigned long id;
  unsigned long generation;
  static unsigned long total_copies;
  MyClass() : id(0), generation(0) { }
  MyClass(unsigned long n) : id(n), generation(0) { }
  MyClass(const MyClass& z) : id(z.id), generation(z.generation + 1) {
    ++total_copies;
  }
};
bool operator==(const MyClass& x, const MyClass& y)
{
  return x.id == y.id;
}
bool operator!=(const MyClass& x, const MyClass& y)
{
  return x.id != y.id;
}
unsigned long MyClass::total_copies = 0;
int main()
{
  vector vector1, vector2(3);
  assert (vector1.size() == 0);
  assert (vector2.size() == 3);
  assert (vector2[0] == MyClass() && vector2[1] == MyClass() &&
          vector2[2] == MyClass());
  for (int i = 0; i != 3; ++i)
    cout << "vector2[" << i << "].generation: " << vector2[i].generation << endl;
  cout << "Total copies: " << MyClass::total_copies << endl;
  return 0;
}
vector2[0].generation: 1
vector2[1].generation: 1
vector2[2].generation: 1
Total copies: 3