📜  C++ STL-algorithm.nth_element()函数(1)

📅  最后修改于: 2023-12-03 15:13:55.319000             🧑  作者: Mango

C++ STL-algorithm.nth_element()函数

在C++中,STL algorithm库提供了许多强大的函数来帮助我们处理各种类型的数据。其中之一就是nth_element()函数。这个函数可以让我们查找一个数组中第k大(小)的元素。

函数定义

以下是nth_element()函数的函数定义,它定义在标准头文件中。

template< class RandomIt >
void nth_element( RandomIt first, RandomIt nth, RandomIt last );
  • first:指向容器第一个元素的迭代器
  • nth:指向第n大(小)的迭代器
  • last:指向容器最后一个元素的迭代器
函数说明

nth_element()函数会在[first,last)范围内重新排列元素,使第nth个元素前面的元素都小于它,后面的元素都大于它。这个函数不会对剩余的元素进行排序,也就是说对于任意i < jfirst[i]first[j]的相对位置不会发生改变。

函数使用

接下来我们来看一个实例。假设我们有一个数组arr,我们要查找第4大的元素。我们可以将nth_element()函数应用于这个数组,如下所示。

#include <iostream>
#include <algorithm>
using namespace std;

int main () {
  int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  int len = sizeof(arr)/sizeof(int);
  nth_element(arr, arr+3, arr+len);
  cout << "第四大的元素是:" << arr[3] << endl;
  return 0;
}

以上代码输出:

第四大的元素是:4
总结

nth_element()函数是一个非常有用的功能,可以用于各种不同的场景。当你需要快速查找一个容器中第n大(小)的元素时,这个函数就派上用场了。它可以将数组的元素重新排列,同时保持它们原来的相对位置,效率很高,值得你去尝试。