#include<iostream>
#include<vector>
#include<list>
using namespace std;
template <typename T>
void display(T c)
{
typename T::iterator it1,it2;
it1=c.begin();
it2=c.end();
while(it1!=it2)
{
cout<<*it1<<endl;
it1++;
}
}
template<typename T>
void Sort(T &con)
{
typename T::iterator it1,it2,it3;
it3=con.begin();
for(it1=con.begin();it1!=con.end();it1++)
{
for(it2=it1;it2!=con.end();it2++)
{
if(*it2<*it1){*it3=*it1;*it1=*it2;*it2=*it3;}
}
}
}
template<typename T>
void merge_sort(T c1,T c2,T &c3)
{
T c(1);
typename T::iterator it1,it2,it3;
it3=c.begin();
Sort(c1);
Sort(c2);
it1=c1.begin();
it2=c2.begin();
for(it1=c1.begin();it1!=c1.end();it1++)
{
for(it2=c2.begin();it2!=c2.end();it2++)
{
if(*it1<*it2)
{
*it3=*it1;
}
else
*it3=*it2;
}
}
}
int main()
{
int a[3]={1,4,3};
vector<int>v1(a,a+3);
int b[3]={4,2,5};
vector<int>v2(b,b+3);
vector<int>v3;
int c[4]={1.5,4.5,3.5,1.5};
list<double>lst1(c,c+4);
int d[3]={4.5,2.5,5.5};
list<double>lst2(d,d+3);
list<double>lst3;
merge_sort(v1,v2,v3);
display(v3);
merge_sort(lst1,lst2,lst3);
display(lst3);
return 0;
}