#include #include #include // for memcpy using namespace std; void print_array(const array&); void print_array(const array&); // function template prototype template ostream& operator<<(ostream&, const array&); int main() { array a1 = {2,3,5,7,11}; cout << "a1="; print_array(a1); array a2 = {'h','e','y'}; cout << "a2="; print_array(a2); memcpy(a2.data(),"Wow",a2.size()); cout << "a2="; print_array(a2); array a3; a3.fill('$'); a3.swap(a2); cout << "a2="; print_array(a2); cout << "a1=" << a1 << endl; } void print_array(const array& arr) { // iterator for loop for (auto arrIt = arr.cbegin(); arrIt != arr.cend(); ++arrIt) cout << *arrIt << ' '; cout << endl; } void print_array(const array& arr) { // index for loop for (auto i = 0u; i < arr.size(); ++i) cout << arr[i]; cout << endl; } template ostream& operator<<(ostream& out, const array& object) { // range-based for loop for (const auto& element : object) out << element << ' '; return out; }