Muchas funciones integradas en C++ devuelven los punteros a la posición en la memoria que proporciona una dirección del número deseado pero no tiene relación con el índice real en un contenedor del valor calculado. Por ejemplo, para encontrar el elemento máximo en un código, usamos std::max_element() , que devuelve la dirección en la memoria, no el índice del elemento deseado. A veces, necesitamos el índice correspondiente a esa dirección, por lo que el siguiente ejemplo demuestra cómo podemos hacer eso,
CPP
// C++ code to demonstrate return value of // max_element() #include <bits/stdc++.h> using namespace std; int main() { // initializing vector vector<int> vi = { 1, 4, 5, 6, 3 }; // printing max element cout << "The max element is : " << (*max_element(vi.begin(), vi.end())); // printing position // prints position in memory cout << "\nThe position of maximum element is : "; printf("%d", max_element(vi.begin(), vi.end())); }
Producción
The max element is : 6 The position of maximum element is : 2015522492
El resultado no se ve bien en el resultado anterior, por lo que existe un requisito para tener formas de calcular el índice exacto de la posición del elemento deseado en el contenedor especificado. Estas formas son:
1) Restar el primer iterador
2) Usando std::distancia()
Restar el primer iterador
En este método, simplemente restamos el puntero de inicio del contenedor , en el caso de los vectores, su iterador » begin() » que apunta a la dirección del primer elemento del contenedor, restando esto podemos obtener el índice exacto del valor requerido escribir el contenedor.
CPP
// C++ code to demonstrate ways to print exact // position subtracting first iterator #include <bits/stdc++.h> using namespace std; // Driver Code int main() { // initializing vector vector<int> vi = { 1, 4, 5, 6, 3 }; // printing max element cout << "The max element is : " << (*max_element(vi.begin(), vi.end())); // printing position // prints wanted position cout << "\nThe position of maximum element is : " << max_element(vi.begin(), vi.end()) - vi.begin(); ; return 0; }
The max element is : 6 The position of maximum element is : 3
Usando std::distancia()
Usar distancia() también es otra alternativa para calcular la posición deseada, pasando por alto el primer iterador como primer argumento y la posición deseada como segundo argumento .
CPP
// C++ code to demonstrate ways to print exact // position using distance() #include <bits/stdc++.h> using namespace std; // Driver Code int main() { // initializing vector vector<int> vi = { 1, 4, 5, 6, 3 }; // printing max element cout << "The max element is : " << (*max_element(vi.begin(), vi.end())); // printing position // prints wanted position cout << "\nThe position of maximum element is : "; cout<< distance(vi.begin(),max_element(vi.begin(), vi.end())); return 0; }
The max element is : 6 The position of maximum element is : 3
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA