读书人

stl nth_elelment函数解决方案

发布时间: 2013-03-25 15:43:04 作者: rapoo

stl nth_elelment函数
路过的学姐学哥能解释一下这句代码:nth_element(start, start+4, end),括号里的三个参数都具体是什么意思呢?网上好多人都是这样说的:nth_element作用为求第n小的元素,并把它放在第n位置上。
但是看下面的程序:
//////////////////////////////////////
//////////////////////////////////////
#pragma warning(disable: 4786)
#include <iostream>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std ;

int main()
{
const int VECTOR_SIZE = 8 ;
typedef vector<int> IntVector ;
typedef IntVector::iterator IntVectorIt ;

IntVector Numbers(VECTOR_SIZE) ;
IntVectorIt start, end, it ;

Numbers[0] = 4 ;
Numbers[1] = 10;
Numbers[2] = 70 ;
Numbers[3] = 30 ;
Numbers[4] = 40;
Numbers[5] = 69 ;
Numbers[6] = 96 ;
Numbers[7] = 100;

start = Numbers.begin() ;
end = Numbers.end() ;

cout << "Before calling nth_element\n" << endl ;
cout << "Numbers { " ;
for(it = start; it != end; it++)
cout << *it << " " ;
cout << " }\n" << endl ;

nth_element(start, start+4, end) ;

cout << "After calling nth_element\n" << endl ;

cout << "Numbers { " ;
for(it = start; it != end; it++)
cout << *it << " " ;
cout << " }\n" << endl ;
}
//////////////////////////////////////////
/////////////////////////////////////////
为什么结果和sort函数输出的结果一样呢?都实现了从小到大的排列?????
[解决办法]
通过调用nth_element(start, start+n, end) 方法可以使第n大元素处于第n位置(从0开始,其位置是下标为 n的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的.

读书人网 >C++

热点推荐