#include <array>
#include <vector>
#include <iostream>
template <typename T>
void printAll(const T& v)
{
for (const typename T::value_type& value : v)
std::cout << value << std::endl;
}
template <typename T>
T doubleData(const T& v)
{
T data = v;
for (typename T::value_type& value : data)
value *= 2;
return data;
}
int main()
{
std::array<int, 10> a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto a2 = doubleData(a);
printAll(a2);
std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto v2 = doubleData(v);
printAll(v2);
}
I2luY2x1ZGUgPGFycmF5PgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBwcmludEFsbChjb25zdCBUJiB2KQp7CiAgICBmb3IgKGNvbnN0IHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGUmIHZhbHVlIDogdikKICAgICAgICBzdGQ6OmNvdXQgPDwgdmFsdWUgPDwgc3RkOjplbmRsOwp9Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KVCBkb3VibGVEYXRhKGNvbnN0IFQmIHYpCnsKICAgIFQgZGF0YSA9IHY7CiAgICBmb3IgKHR5cGVuYW1lIFQ6OnZhbHVlX3R5cGUmIHZhbHVlIDogZGF0YSkKICAgICAgICB2YWx1ZSAqPSAyOwogICAgICAgIAogICAgcmV0dXJuIGRhdGE7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjphcnJheTxpbnQsIDEwPiBhID0gezEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwfTsKICAgIGF1dG8gYTIgPSBkb3VibGVEYXRhKGEpOwogICAgcHJpbnRBbGwoYTIpOwogICAgCiAgICBzdGQ6OnZlY3RvcjxpbnQ+IHYgPSB7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTB9OwogICAgYXV0byB2MiA9IGRvdWJsZURhdGEodik7CiAgICBwcmludEFsbCh2Mik7Cn0=