std :: nth_element () en C ++

C ++ STL | std :: nth_element () : En este artículo, vamos a ver lo que el uso de la función de la biblioteca estándar nth_element () es y detalles acerca de la sintaxis, uso y aplicación?

La biblioteca estándar de C ++ tiene un gran número de funciones que no son tan exploradas, pero puede ser muy útil en class de usos específicos. Se le ayuda a escribir menos cantidad de códigos y hacer las cosas rápidamente. Por ejemplo, usted está construyendo algún sistema de back-end en C ++ y que tiene miles de líneas ya. En tales escenarios, estas funciones de la biblioteca estándar de gran ayuda para reducir el tamaño de la base de código. También en la codificación competitivo en el que el tiempo es importante presentación, este tipo de usos de función pueden hacer su día!

nth_element () es uno de esos función std que ayuda a encontrar enésimo elemento fuera de un rango de lista si la lista se solucionó.

class ejemplo,

Say the list is:
[4, 1, 2, 3, 6, 7, 5]

Usando la función nth_element () si usted quiere encontrar tercera elemento (indexada 0) de toda la gama que puede tener su lista actualizada a algo como:

[3, 1, 2, 4, 6, 7, 5]

que le dice que el elemento tercero en la lista ordenada sería matriz [3] = 4

la característica más importante de esta función es:

  1. Sólo se le da a su enésimo elemento en el orden correcto
  2. case el resto del elemento, no se puede adivinar cuál sería la disposición. Depende del compilador. Lo que puede obtener seguro es que los elementos que preceden al elemento enésimo serían todo más pequeño que el enésimo elemento y el elemento que viene después del enésimo elemento son mayores que el elemento enésimo.

Sintaxis de n-ésimo elemento:

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)

Así For el ejemplo anterior decir el nombre del vector es arr. Entonces, sería:

nth_iterator(arr.begin(),arr+3,arr.end())

Dado que el rango es el primero al último de la lista y tenemos que encontrar la tercera elemento (indexada 0) si la lista se solucionó.

Ejemplo:

#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;
}

Salida:

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

aplicación o Usos:

Podemos utilizar esta función de biblioteca estándar cada vez que tenemos que encontrar la nth_element () si la matriz era ordenados en una sola vez.

Una aplicación importante puede ser la búsqueda de la mediana en una matriz sin clasificar.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *