
#include "mfunctions.h"
#include "mvector.h"




typedef mvector<int> ARR_INT;



template <class TYPE>
void function_view(const TYPE& element)
{
	cout<<" "<<element;
}

int main (void)
{
	int arr[] = {0,1,2,3,4,5,6,7,8,9};
	mvector<int> v1(5);
	mvector<ARR_INT> v2(4);
	
	//Este bucle for convierte el vector de 4 filas en un vector de 4 filas y 5 columnas.
	//for (int cont = 0; cont < 4; ++cont) v2[cont].resize(5);
	v2.State();
	v2[1].insert(v2[1].begin(), 1);
	v2[1].State();
	
	v1.State();
	cout<<endl<<"Elementos: ";
	mfor_each(v1.begin(), v1.end(), function_view<int>);
	//Se copian los 5 primeros elementos de arr sobre v1
	mcopy(arr,arr+5,v1.begin()); 
	v1.State();
	cout<<endl<<"Elementos: ";
	mfor_each(v1.begin(), v1.end(), function_view<int>);	
	//Se aņaden otros cinco elementos al vector v1. Pasa a tener 10 elementos
	v1.insert(v1.end(), arr+5, arr+10);
	v1.State();
	cout<<endl<<"Elementos: ";
	mfor_each(v1.begin(), v1.end(), function_view<int>);	
	

	v1.erase(v1.begin()+3,v1.begin()+7);
	v1.State();
	cout<<endl<<"Elementos: ";
	mfor_each(v1.begin(), v1.end(), function_view<int>);
	cout<<endl;
	
	v1.clear();
	v1.State();
	mfor_each(v1.begin(), v1.end(), function_view<int>);
}
