对给定範围进行"排序"
说明
模板函式
头档案: <algorithm>
函式名: std::nth_element
(1) | template <class RandomAccessIterator> void nth_element (RandomAccessIterator first, RandomAccessIterator nth,RandomAccessIterator last); |
---|---|
(2) | template <class RandomAccessIterator, class Compare> void nth_element (RandomAccessIterator first, RandomAccessIterator nth,RandomAccessIterator last, Compare comp); |
对给定範围内的元素"排序"
对给定範围[first,last)内的元素进行重新布置.方法是,nth位置的元素放置的值就是把所有元素排序后在nth位置的值.把所有不大于nth的值放到nth的前面,把所有不小于nth的值放到nth后面.
参数
- first, last
- 随机访问叠代器.指定了需要重新"排序"的範围.包括first,但不包括last.
- nth
- 随机访问叠代器.指向範围[first,last)内的一个位置.这个位置将放置排序后应该放于此位置的元素.
comp
二元函式. 返回bool. 表明是否第一个参数应该排序到第二个参数的前面.此函式不应该修改参数值.可以是一个函式指针或函式对象.
返回值
无
实例
//nth_elementexample#include<iostream>//std::cout#include<algorithm>//std::nth_element,std::random_shuffle#include<vector>//std::vectorboolmyfunction(inti,intj){return(i<j);}intmain(){std::vector<int>myvector;//setsomevalues:for(inti=1;i<10;i++)myvector.push_back(i);//123456789std::random_shuffle(myvector.begin(),myvector.end());//usingdefaultcomparison(operator<):std::nth_element(myvector.begin(),myvector.begin()+5,myvector.end());//usingfunctionascompstd::nth_element(myvector.begin(),myvector.begin()+5,myvector.end(),myfunction);//printoutcontent:std::cout<<"myvectorcontains:";for(std::vector<int>::iteratorit=myvector.begin();it!=myvector.end();++it)std::cout<<''<<it;std::cout<<'\n';return0;}