C++ Variables de tipo pair

Enviado por jvilella el Vie, 21/02/2020 - 12:51

Requisitos:

El tipo de variable pair permite almacenar y mantener vincluados un par de valores (dos valores).

Lo primero que se ha de hacer para poder utilizar vectores es añadir al principio del código esta línea:

#include <utility>

Una variable de tipo pair se declara así:

pair < tipo_de_valor_primero, tipo_de_valor_segundo > nombre_de_la_variable;

y se le añaden elementos mediate sus dos atributos first y second.

Por ejemplo:

string nombre;
int goles;
cin >> nombre;
cin >> goles;
pair<string, int> goleador;
goleador.first = nombre;
goleador.second = goles;

Una variación del mismo código sería leer el valor del teclado guardándolo directamente en la variable de tipo pair:

pair<string, int> goleador;
cin >> goleador.first;
cin >> goleador.second;

Se pueden asignar los valores de la variable pair durante su declaración con este formato:

pair < tipo_de_valor_primero, tipo_de_valor_segundo > nombre_de_la_variable( <primer_valor>, <segundo_valor> );

Podríamos modificar el código anterior para signar los valores de la variable de tipo pair durante su declaración y quedaría así:

string nombre;
int goles;
cin >> nombre;
cin >> goles;
pair<string, int> goleador(nombre, goles);

Las variables de tipo pair resultan útiles cuando quieres mantener dos valores siempre unidos, por ejemplo podemos crear un listado asociando cada jugador de nuestor equipo con la cantidad de goles que ha marcado mediante un vector de pair:

vector <pair<string, int> > goleadores; // Recordar incluir #include <vector>
int i = 0;
while (i < 11) {
  string nombre;
  int goles;
  cin >> nombre;
  cin >> goles;
  pair<string, int> goleador;
  goleador.first = nombre;
  goleador.second = goles;
  goleadores.push_back(goleador);
  i = i + 1;
}

Y obtendríamos el máximo goleador recorriendo el vector en búsqueda del que ha marcado más goles, añadiendo este código:

pair<string, int> max_goleador("", -1); /* Asignamos inicialmente como maximo goleador a un nombre vacio con -1 goles, de esta manera el primer jugador de la lista, aunque lleva 0 goles pasara a ser temporalmente el maximo goleador hasta que encontremos otro con mas goles */
i = 0;
while (i < 11) {
  if (goleadores[i].second > max_goleador.second) {
    max_goleador = goleadores[i];
  }
  i = i + 1;
}
cout << "El maximo goleador es " << max_goleador.first << " con " << max_goleador.second << " goles";

 

 

 

Printer Friendly, PDF & Email

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.