#include <iostream>
#include <stdlib.h>
struct Foo
{
Foo(int i) : i(i) {}
int i;
};
int main(int,char**)
{
srand(42);
Foo *src[10];
for (int i = 0; i<10; i++)
{
src[i] = new Foo(i);
}
Foo *dst[10];
for (int i = 0; i<10; i++)
{
Foo *src_elem = NULL;
while (src_elem == NULL)
{
int random_index = rand()%10;
src_elem = src[random_index];
src[random_index] = NULL;
}
dst[i] = src_elem;
}
for (int i = 0; i<10; i++)
{
std::cout << dst[i]->i << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkbGliLmg+CgpzdHJ1Y3QgRm9vCnsKICAgIEZvbyhpbnQgaSkgOiBpKGkpIHt9CiAgICBpbnQgaTsKfTsKCmludCBtYWluKGludCxjaGFyKiopCnsKICAgIHNyYW5kKDQyKTsKICAgIEZvbyAqc3JjWzEwXTsKICAgIGZvciAoaW50IGkgPSAwOyBpPDEwOyBpKyspCiAgICB7CiAgICAgICAgc3JjW2ldID0gbmV3IEZvbyhpKTsKICAgIH0KICAgIAogICAgRm9vICpkc3RbMTBdOwogICAgZm9yIChpbnQgaSA9IDA7IGk8MTA7IGkrKykKICAgIHsKICAgICAgICBGb28gKnNyY19lbGVtID0gTlVMTDsKICAgICAgICB3aGlsZSAoc3JjX2VsZW0gPT0gTlVMTCkKICAgICAgICB7CiAgICAgICAgICAgIGludCByYW5kb21faW5kZXggPSByYW5kKCklMTA7CiAgICAgICAgICAgIHNyY19lbGVtID0gc3JjW3JhbmRvbV9pbmRleF07CiAgICAgICAgICAgIHNyY1tyYW5kb21faW5kZXhdID0gTlVMTDsKICAgICAgICB9CiAgICAgICAgZHN0W2ldID0gc3JjX2VsZW07CiAgICB9CiAgICAKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGk8MTA7IGkrKykKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgZHN0W2ldLT5pIDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9