#include<iostream>
#include<vector>
#include<forward_list>
#include<iterator>
#include<algorithm>
using namespace std;
template<typename C>
using Iterator_type=typename C::iterator;
template<typename Iter>
using Iterator_category=typename std::iterator_traits<Iter>::iterator_category;
template<typename Ran>
void sort_helper(Ran beg,Ran end,random_access_iterator_tag){
sort(beg,end);
}
template<typename For>
void sort_helper(For beg,For end,forward_iterator_tag){
vector<int> v{beg,end};
std::sort(v.begin(),v.end());
std::copy(v.begin(),v.end(),beg);
}
template<typename C>
void sort(C& c){
using Iter=Iterator_type<C>;
sort_helper(c.begin(),c.end(),Iterator_category<Iter>{});
}
int main(){
vector<int> vi{4,5,3,1,7};
sort(vi);
std::cout<<"Sort vector: "<<'\n';
for(auto i:vi)
std::cout<<i<<" ";
forward_list<int> fi{6,4,2,8,12};
sort(fi);
cout<<"Sort forward_list: "<<'\n';
for(auto i:fi)
cout<<i<<" ";
cout<<'\n';
system("pause");
return 0;
}
运行结果:
Sort vector:
1 3 4 5 7
Sort forward_list:
2 4 6 8 12
请按任意键继续. . .
网友评论