#include <iostream>
#include <initializer_list>
#include <memory>
class arr1D
{
protected:
int size;
std::unique_ptr<int[]> arr;
public:
arr1D(const std::initializer_list<int>& input) : size(input.size())
{
arr = std::unique_ptr<int[]>(new int[size]);
int index = 0;
for (const auto& it : input)
{
arr[index] = it;
++index;
}
}
arr1D(int siz = 10) :size(siz), arr(new int[size] {0}) // this will also do the same job
{}
friend std::ostream & operator<<(std::ostream &, const arr1D &);
};
int main()
{
arr1D a1 = { 1,2,3,4,5 };
std::cout << a1 << std::endl;
arr1D a2;
std::cout << a2 << std::endl;
std::cin.get();
}
std::ostream & operator<<(std::ostream &_return, const arr1D &a)
{
_return << "arr: ";
for (int i = 0; i< a.size; i++) std::cout << a.arr[i] << " ";
_return << "size: " << a.size;
return _return;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KI2luY2x1ZGUgPG1lbW9yeT4KCmNsYXNzIGFycjFECnsKcHJvdGVjdGVkOgoJaW50IHNpemU7CglzdGQ6OnVuaXF1ZV9wdHI8aW50W10+IGFycjsKcHVibGljOgoJYXJyMUQoY29uc3Qgc3RkOjppbml0aWFsaXplcl9saXN0PGludD4mIGlucHV0KSA6IHNpemUoaW5wdXQuc2l6ZSgpKQoJewoJCWFyciA9IHN0ZDo6dW5pcXVlX3B0cjxpbnRbXT4obmV3IGludFtzaXplXSk7CgkJaW50IGluZGV4ID0gMDsKCQlmb3IgKGNvbnN0IGF1dG8mIGl0IDogaW5wdXQpCgkJewoJCQlhcnJbaW5kZXhdID0gaXQ7CgkJCSsraW5kZXg7CgkJfQoJfQoKCWFycjFEKGludCBzaXogPSAxMCkgOnNpemUoc2l6KSwgYXJyKG5ldyBpbnRbc2l6ZV0gezB9KSAgLy8gdGhpcyB3aWxsIGFsc28gZG8gdGhlIHNhbWUgam9iCgkJe30KCWZyaWVuZCBzdGQ6Om9zdHJlYW0gJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBhcnIxRCAmKTsKfTsKaW50IG1haW4oKQp7CglhcnIxRCBhMSA9IHsgMSwyLDMsNCw1IH07CglzdGQ6OmNvdXQgPDwgYTEgPDwgc3RkOjplbmRsOwoKCWFycjFEIGEyOwoJc3RkOjpjb3V0IDw8IGEyIDw8IHN0ZDo6ZW5kbDsKCglzdGQ6OmNpbi5nZXQoKTsKfQpzdGQ6Om9zdHJlYW0gJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmX3JldHVybiwgY29uc3QgYXJyMUQgJmEpCnsKCV9yZXR1cm4gPDwgImFycjogIjsKCWZvciAoaW50IGkgPSAwOyBpPCBhLnNpemU7IGkrKykgIHN0ZDo6Y291dCA8PCBhLmFycltpXSA8PCAiICI7CgkKCV9yZXR1cm4gPDwgInNpemU6ICIgPDwgYS5zaXplOwoJcmV0dXJuIF9yZXR1cm47Cn0KCg==