Data Structure C++

#include 
#include 
#include 
#include 
using namespace std;
class MyClass {
  int a, b;
  int sum;
public:
  MyClass() { 
     a = b = 0; 
     sum = 0; 
  }
  MyClass(int x, int y) { 
     a = x; 
     b = y; 
  }
  MyClass(const MyClass &o) {
   a = o.a; b = o.b;
   sum = o.sum;
  }
  MyClass operator=(const MyClass &o) {
    a = o.a; b = o.b;
    return *this;
  }
  void setsum() { 
    sum = a+b; 
  }
  void show() {
    cout << a << "," << b;
    cout << " Sum is: " << sum << endl;
  }
};
int main()
{
  unsigned char raw1[100], raw2[100];
  MyClass *p;
  deque dequeObject(5);
  int i;
  for(i = 0; i <5; i++) {
    dequeObject[ i ] = MyClass(i, i);
    dequeObject[ i ].setsum();
  }
  
  // store deque in uninitialized memory the wrong way
  copy(dequeObject.begin(), dequeObject.end(), (MyClass *)raw1);  
  cout << "Contents of raw memory (incorrect):\n";
  p = (MyClass *) raw1;
  for(i = 0; i <5; i++)
    p[ i ].show();
  // the right way
  copy(dequeObject.begin(), dequeObject.end(),raw_storage_iterator((MyClass *)raw2));
  cout << "Contents of raw memory (correct):\n";
  p = (MyClass *) raw2;
  for(i = 0; i <5; i++)
    p[ i ].show();
  return 0;
}