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++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。