#include <iostream>
#include <array>
#include <vector>
#include <deque>
#include <string>
using namespace std;

template<typename T>
void print_container(const T& begin, const T& end)
{
	for(T current = begin; current != end; ++current)
		std::cout << *current << " ";
	std::cout << std::endl;
}

int main() {
	int array[] {1, 2, 3, 4, 5};
	print_container((int*)array, array + 5);
	
	std::array<int, 4> stdarray {10, 20, 30, 40};
	print_container(stdarray.begin(), stdarray.end());
	
	std::vector<std::string> vector {"one", "two", "three"};
	print_container(vector.begin(), vector.end());
	
	std::deque<const char*> deque {"one", "two", "three"};
	print_container(deque.begin(), deque.end());
	
	return 0;
}