STL | nth_element 的使用

2019-08-27  本文已影响0人  0与1的邂逅

nth_element:

参数:
  • first、last
    随机访问迭代器,指定了需要重新"排序"的范围,包括first,但不包括last。

  • nth
    随机访问迭代器,指向范围[first,last)内的一个位置,这个位置将放置排序后应该放于此位置的元素。

  • compare
    二元函数, 返回bool值。 表明是否第一个参数应该排序到第二个参数的前面。此函数不应该修改参数值,可以是一个函数指针或函数对象。

返回值:


简单测试代码如下:
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;

int main()
{
    int nth=7;//数组下标:nth>=0 && nth<len
    int iarray[]={5,6,15,89,7,20,1,3,52,63,12,64,47};
    int len=sizeof(iarray)/sizeof(int);
    cout<<"LEN:"<<len<<endl;
    cout<<"Before:\n";
    for(int i=0;i<len;i++)cout<<iarray[i]<<" ";
    cout<<endl;
    nth_element(iarray,iarray+nth,iarray+len);// 排序第 8个元素(nth+1) 
    cout<<"\nAfter:\n";
    for(int i=0;i<len;i++)cout<<iarray[i]<<" ";
    cout<<endl;
    cout<<"7-th:"<<iarray[nth]<<endl;// 输出数组下标为 7的元素(也就是第 8个元素) 
}

要注意的是,此函数只是将第nth大的元素排好了位置,但并没有返回值。所以要知道第nth+1大 的元素 还得自己输出数组下标为nth 的元素,即cout<<iarray[nth]<<endl;

写在最后:

参考资料:

学无止境,奋斗不止。

上一篇 下一篇

猜你喜欢

热点阅读