5.4.2.1类型函数

2019-10-07  本文已影响0人  Jianbaozi
#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
请按任意键继续. . .
上一篇 下一篇

猜你喜欢

热点阅读