首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

stl nth_elelment函数解决方案

2013-03-25 
stl nth_elelment函数路过的学姐学哥能解释一下这句代码:nth_element(start, start+4, end),括号里的三个

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的元素),并且比这个元素小的元素都排在这个元素之前,比这个元素大的元素都排在这个元素之后,但不能保证他们是有序的.

热点排行