C++ 的标准库有大量的函数,这些函数没有被探索过,但在特定用法的情况下非常方便。它可以帮助您编写更少的代码并快速完成工作。假设您正在用 C++ 构建一些后端系统,并且已经有数千行。在这种情况下,这些标准库函数对减少代码库大小有很大帮助。同样在提交时间很重要的竞争性编码中,这些类型的函数使用可能会让你开心!
nth_element() 就是这样一个 std 函数,如果列表已排序,它有助于从列表范围中找到第 n 个元素。
例如,
Say the list is: [4, 1, 2, 3, 6, 7, 5]
如果你想找到 3,使用 nth_element() 函数rdelement(0-indexed) 在整个范围之外,您可能会将列表更新为类似的内容,
[3, 1, 2, 4, 6, 7, 5]
这告诉你 3rd排序列表中的元素将是 arr[3]=4
该函数最重要的特点是:
- 它只以正确的顺序给出你的第 n 个元素
- 对于元素的其余部分,您无法猜测会是什么安排。这取决于编译器。您可以确定的是,第 n 个元素之前的元素都将小于第 n 个元素,并且第 n 个元素之后的元素大于第 n 个元素。
n-th 元素的语法:
void nth_element(iterator start, iterator nth, iterator end) // so it doesn't returns anything, // rather updates the list internally iterator start = start of your range iterator end = end of your range iterator nth = nth term you want to see in position if the list was sorted (0-indexed)
所以对于上面的例子,向量名称是 arr。那么,它将是:
nth_iterator(arr.begin(),arr+3,arr.end())
由于范围是列表的第一个到最后一个,我们需要找到 3rdelement(0-indexed) 如果列表已排序。
例:
#include <bits/stdc++.h>
using namespace std;
//to print the vector
void print(vector<int> arr)
{
for (auto it:arr) {
cout << it << " ";
}
cout << endl;
}
int main()
{
//to see how it's initialized
vector<int> arr{ 4, 1, 2, 3, 6, 7, 5 };
cout << "Printing initially...\n";
print(arr);
//find 3rd element if list was sorted
nth_element(arr.begin(), arr.begin() + 3, arr.end());
cout << "the 3rd element if the list was sorted is:" << arr[3] << endl;
cout << "the new rearrangement of the array...\n";
print(arr);
return 0;
}
输出:
Printing initially... 4 1 2 3 6 7 5 the 3rd element if the list was sorted is:4 the new rearrangement of the array... 3 1 2 4 5 6 7
应用或用途:
如果数组是一次性排序的,我们可以在需要查找 nth_element() 时使用这个标准库函数。
一个重要的应用可以是在未排序的数组中查找中位数。
相关用法
- C++ std::nth_element用法及代码示例
- C++ std::numeric_limits::digits用法及代码示例
- C++ std::not_equal_to用法及代码示例
- C++ std::next用法及代码示例
- C++ std::next_permutation()用法及代码示例
- C++ std::none_of用法及代码示例
- C++ std::max()用法及代码示例
- C++ std::string::push_back()用法及代码示例
- C++ std::less_equal用法及代码示例
- C++ std::is_member_object_pointer模板用法及代码示例
- C++ std::copy_n()用法及代码示例
- C++ std::string::insert()用法及代码示例
- C++ std::is_sorted_until用法及代码示例
- C++ std::iota用法及代码示例
- C++ std::string::data()用法及代码示例
- C++ std::is_permutation用法及代码示例
- C++ std::list::sort用法及代码示例
- C++ std::all_of()用法及代码示例
- C++ std::string::compare()用法及代码示例
- C++ std::add_volatile用法及代码示例
注:本文由纯净天空筛选整理自 std::nth_element() in C++。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。