#include <iostream>
#include <vector>
#include <iterator>
#include <string>
#include <stdlib.h>
using namespace std;
class A
{
public:
A()
{
}
A(int i)
{
size = i;
data = new int[i * sizeof(int)];
}
~A()
{
delete[] data;
}
int* data;
int size;
};
class B
{
public:
B(int i, int j)
{
size = i;
size_A = j;
A example(j);
data = new A[i * sizeof(example)];
for (int i2 = 0; i2 < i; ++i2)
data[i2] = A(example);
}
~B()
{
delete[] data;
}
A* bah(int b)
{
A* result = new A(b);
return result;
}
A* data;
int size;
int size_A;
};
class C
{
public:
C()
{
data = vector<B*>();
}
~C()
{
}
void foo()
{
for (vector<B*>::iterator it = data.begin(); it + 1 != data.end(); ++it)
{
//do something to it's data
A* new_data = (*it)->bah((*(it + 1))->size);
(*(it + 1))->data = new_data;
}
}
vector<B*> data;
};
int main() {
C c;
c.data.push_back(new B(1, 2));
c.data.push_back(new B(2, 4));
c.data.push_back(new B(4, 10));
c.foo();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzdGRsaWIuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEEKewpwdWJsaWM6CglBKCkKCXsKCX0KCUEoaW50IGkpCgl7CgkJc2l6ZSA9IGk7CgkJZGF0YSA9IG5ldyBpbnRbaSAqIHNpemVvZihpbnQpXTsKCX0KCX5BKCkKCXsKCQlkZWxldGVbXSBkYXRhOwoJfQoJaW50KiBkYXRhOwoJaW50IHNpemU7Cn07CgpjbGFzcyBCCnsKcHVibGljOgoJQihpbnQgaSwgaW50IGopCgl7CgkJc2l6ZSA9IGk7CgkJc2l6ZV9BID0gajsKCQlBIGV4YW1wbGUoaik7CgkJZGF0YSA9IG5ldyBBW2kgKiBzaXplb2YoZXhhbXBsZSldOwoJCWZvciAoaW50IGkyID0gMDsgaTIgPCBpOyArK2kyKQoJCQlkYXRhW2kyXSA9IEEoZXhhbXBsZSk7Cgl9Cgl+QigpCgl7CgkJZGVsZXRlW10gZGF0YTsKCX0KCUEqIGJhaChpbnQgYikKCXsKCQlBKiByZXN1bHQgPSBuZXcgQShiKTsKCQlyZXR1cm4gcmVzdWx0OwoJfQoJQSogZGF0YTsKCWludCBzaXplOwoJaW50IHNpemVfQTsKfTsKCmNsYXNzIEMKewpwdWJsaWM6CglDKCkKCXsKCQlkYXRhID0gdmVjdG9yPEIqPigpOwoJfQoJfkMoKQoJewoJfQoJdm9pZCBmb28oKQoJewoJCWZvciAodmVjdG9yPEIqPjo6aXRlcmF0b3IgaXQgPSBkYXRhLmJlZ2luKCk7IGl0ICsgMSAhPSBkYXRhLmVuZCgpOyArK2l0KQoJCXsKCQkJLy9kbyBzb21ldGhpbmcgdG8gaXQncyBkYXRhCgkJCUEqIG5ld19kYXRhID0gKCppdCktPmJhaCgoKihpdCArIDEpKS0+c2l6ZSk7CgkJCSgqKGl0ICsgMSkpLT5kYXRhID0gbmV3X2RhdGE7CgkJfQoJfQoJdmVjdG9yPEIqPiBkYXRhOwp9OwoKaW50IG1haW4oKSB7CglDIGM7CgljLmRhdGEucHVzaF9iYWNrKG5ldyBCKDEsIDIpKTsKCWMuZGF0YS5wdXNoX2JhY2sobmV3IEIoMiwgNCkpOwoJYy5kYXRhLnB1c2hfYmFjayhuZXcgQig0LCAxMCkpOwoJYy5mb28oKTsKCXJldHVybiAwOwp9