zoukankan      html  css  js  c++  java
  • cb51a_c++_STL_算法_根据第n个元素排序nth_element

    cb51a_c++_STL_算法_根据第n个元素排序nth_element
    nth_element(b,n,e),比如最大的5个数排序,或者最小的几个数
    nth_element(b,n,e,p)
    对比:partition()算法,分区算法


    error C2675: 一元“++”:“TT88”不定义该运算符或到预定义运算符可接收类型的转换
    for (TT88::iterator iter = ideq.begin(); iter != ideq.end(); ++ideq),写错了,应该是++iter

    /*cb51a_c++_STL_算法_根据第n个元素排序nth_element
    nth_element(b,n,e),比如最大的5个数排序,或者最小的几个数
    nth_element(b,n,e,p)
    对比:partition()算法,分区算法
    
    
    error C2675: 一元“++”:“TT88”不定义该运算符或到预定义运算符可接收类型的转换
    for (TT88::iterator iter = ideq.begin(); iter != ideq.end(); ++ideq),写错了,应该是++iter
    */
    
    #include <iostream>
    #include <algorithm>
    #include <deque>
    #include <iterator>
    #include <functional>
    
    using namespace std;
    
    template <class TT88>
    void print88(TT88 &ideq)
    {
        for (TT88::iterator iter = ideq.begin(); iter != ideq.end(); ++iter)
            cout << *iter << ' ';
        cout << endl;
    }
    
    int main()
    {
        deque<int> ideq,ideq2;
        for (int i = 3; i <= 7; ++i)
            ideq.push_back(i);
        for (int i = 2; i <= 6; ++i)
            ideq.push_back(i);
        for (int i = 1; i <= 5; ++i)
            ideq.push_back(i);
        ideq2 = ideq;
    
        print88(ideq);
        nth_element(ideq.begin(), ideq.begin() + 3, ideq.end());//默认less<int>(),升序
        cout << "nth_element排序后:" << endl;
        print88(ideq);
    
        cout << "用copy,到输出流迭代器显示:" << endl;
        copy(ideq.begin(), ideq.begin() + 4, ostream_iterator<int>(cout, " "));
        cout << endl;
    
        ideq = ideq2;
        nth_element(ideq.begin(), ideq.begin() + 1, ideq.end(),greater<int>());//降序,大到小
        cout << "降序:" << endl;
        print88(ideq);
    
        deque<int>::iterator pos;
        //pos = partition(ideq.begin(), ideq.end(), bind2nd(greater<int>(), 3));
        cout << endl;
        ideq = ideq2;
        cout << "分区partition小于等于3放左边,其余放右边" << endl;
        pos = partition(ideq.begin(), ideq.end(), bind2nd(less_equal<int>(), 3));
        print88(ideq);
        copy(ideq.begin(), pos, ostream_iterator<int>(cout, " "));
        return 0;      
    }
  • 相关阅读:
    [Python]小甲鱼Python视频第038课(类和对象:继承 )课后题及参考解答
    [Python]小甲鱼Python视频第037课(类和对象:面向对象编程 )课后题及参考解答
    [Python]小甲鱼Python视频第036课(类和对象:给大家介绍对象 )课后题及参考解答
    Session共享
    防止表单重复提交
    Docker安装redis
    Docker安装mysql
    docker-compose常用命令
    Docker常用命令
    Oracle 随机取记录
  • 原文地址:https://www.cnblogs.com/txwtech/p/12371314.html
Copyright © 2011-2022 走看看