nth_element() 演算法和 partial_sort() 不同。應用的範圍由它的第一個和第三個引數指定。第二個引數是一個指向第 n 個元素的疊代器。如果這個範圍內的元素是完全有序的,nth_dement() 的執行會導致第 n 個元素被放置在適當的位置。這個範圍內,在第 n 個元素之前的元素都小於第 n 個元素,而且它後面的每個元素都會比它大。演算法預設用
<
運算子來生成這個結果。
下面是一個使用 nth_elemen() 的範例:
std::vector<int> numbers {22, 7, 93, 45, 19, 56, 88, 12, 8, 7, 15, 10};
size_t count {5}; // Index of nth element
std::nth_element(std::begin(numbers), std::begin(numbers) + count, std::end(numbers));
這裡的第 n 個元素是 numbers 容器的第 16 個元素,對應於 numbers[5],圖 1 展示了它的工作方式。
圖 1 nth_element() 演算法的操作