#include <iostream>
#include <initializer_list>
class arr1D
{
protected:
int size;
int *arr;
public:
arr1D(const std::initializer_list<int>& input) : size(input.size())
{
int* temp = new int[size];
int index = 0;
for (const auto& it : input)
{
temp[index] = it;
++index;
}
arr = temp;
}
arr1D(int siz = 10) :size(siz), arr(new int[size] {0}) // this will also do the same job
{}
~arr1D() //check rule of 3: also need operator= and copy assignment con.
{
delete arr;
}
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KCmNsYXNzIGFycjFECnsKcHJvdGVjdGVkOgoJaW50IHNpemU7CglpbnQgKmFycjsKcHVibGljOgoJYXJyMUQoY29uc3Qgc3RkOjppbml0aWFsaXplcl9saXN0PGludD4mIGlucHV0KSA6IHNpemUoaW5wdXQuc2l6ZSgpKQoJewoJCWludCogdGVtcCA9IG5ldyBpbnRbc2l6ZV07CgkJaW50IGluZGV4ID0gMDsKCQlmb3IgKGNvbnN0IGF1dG8mIGl0IDogaW5wdXQpCgkJewoJCQl0ZW1wW2luZGV4XSA9IGl0OwoJCQkrK2luZGV4OwoJCX0KCQlhcnIgPSB0ZW1wOwoJfQoKCWFycjFEKGludCBzaXogPSAxMCkgOnNpemUoc2l6KSwgYXJyKG5ldyBpbnRbc2l6ZV0gezB9KSAgLy8gdGhpcyB3aWxsIGFsc28gZG8gdGhlIHNhbWUgam9iCgkJe30KCX5hcnIxRCgpICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NoZWNrIHJ1bGUgb2YgMzogIGFsc28gbmVlZCBvcGVyYXRvcj0gYW5kIGNvcHkgYXNzaWdubWVudCBjb24uCgl7CgkJZGVsZXRlIGFycjsKCX0KCWZyaWVuZCBzdGQ6Om9zdHJlYW0gJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmLCBjb25zdCBhcnIxRCAmKTsKfTsKaW50IG1haW4oKQp7CglhcnIxRCBhMSA9IHsgMSwyLDMsNCw1IH07CglzdGQ6OmNvdXQgPDwgYTEgPDwgc3RkOjplbmRsOwoKCWFycjFEIGEyOwoJc3RkOjpjb3V0IDw8IGEyIDw8IHN0ZDo6ZW5kbDsKCglzdGQ6OmNpbi5nZXQoKTsKfQpzdGQ6Om9zdHJlYW0gJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmX3JldHVybiwgY29uc3QgYXJyMUQgJmEpCnsKCV9yZXR1cm4gPDwgImFycjogIjsKCWZvciAoaW50IGkgPSAwOyBpPGEuc2l6ZTsgaSsrKQoJewoJCXN0ZDo6Y291dCA8PCAqKGEuYXJyICsgaSkgPDwgIiAiOwoJfQoJX3JldHVybiA8PCAic2l6ZTogIiA8PCBhLnNpemU7CglyZXR1cm4gX3JldHVybjsKfQoK