STL问题:如果使用nth_element选出有重复元素的第N个元素?
比如有这么个数组int a[]={1, 1, 2, 2, 3, 3, };
传统的less<int>选第三个元素应该这么写nth_element(a,a+2,a+6);
这样选的结果是2,也就是说在排序以后,从小到大第二个元素是“2”。
现在我想把重复的算作一个元素,也就是让nth_element(a,a+2,a+6)能够返回3。一种办法是使用unique来去重,然后再nth_element,还有一种办法(我认为)是合理构造一个comp函数,使得nth_element能“跳过”重复的元素。因为我只是想选出那个元素而已,其他多余的操作不想做。想在O(n)的时间内完成这个。该怎么做呢?