一:功能
将一个序列分为两组,前一组元素都小于*nth,后一组元素都大于*nth, 并且确保第 nth 个位置就是排序之后所处的位置。即该位置的元素是该序列中第nth小的数。
二:用法
#include <vector>
#include <algorithm>
#include <iostream>
int main() {
std::vector<int> data{9, 1, 8, 2, 7, 3, 6, 4, 5};
std::nth_element(data.begin(), data.begin() + 4, data.end());
for(auto e : data)
std::cout << e << " ";
std::cout << std::endl;
std::cout << "data[4] == " << data[4] << "\n";
std::nth_element(data.begin(), data.begin() + 7, data.end(),
std::greater<>());
for(auto e : data)
std::cout << e << " ";
std::cout << std::endl;
std::cout << "data[7] == " << data[7] << "\n";
}