Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] pair en c++ se muy poco

Estas en el tema de pair en c++ se muy poco en el foro de C/C++ en Foros del Web. Hola tengo dudas con pair, Ejemplo tengo pair<string,doble>tabla como puedo saber si existe un valor en ella, por ejemplo tengo tabla.first=a tabla.second=10 Como puedo acceder ...
  #1 (permalink)  
Antiguo 29/10/2014, 20:20
 
Fecha de Ingreso: octubre-2014
Mensajes: 3
Antigüedad: 10 años, 1 mes
Puntos: 0
pair en c++ se muy poco

Hola tengo dudas con pair,
Ejemplo
tengo pair<string,doble>tabla
como puedo saber si existe un valor en ella, por ejemplo tengo tabla.first=a tabla.second=10
Como puedo acceder a este valor en este caso:

cin<<c; c=a;
  #2 (permalink)  
Antiguo 30/10/2014, 01:54
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: pair en c++ se muy poco

Código C++:
Ver original
  1. std::pair< std::string, double >tabla;

Ese "tabla" únicamente es capaz de almacenar dos valores: un string y un double. Si tu intención es tener una variable que permita almacenar una colección de parejas, necesitas un contenedor.

Dependiendo de tus necesidades concretas la elección del contenedor ideal puede variar:
  • std::vector: Es el contenedor más utilizado. Permite el acceso aleatorio, admite duplicados y el orden de los elementos es el que tú determines.
  • std::set: Este contenedor no admite el acceso aleatorio, no admite duplicados y los elementos aparecerán SIEMPRE ordenados.
  • std::map: Este contenedor permite indizar sus elementos en base a una clave. Esta clave es la que se usará para localizar cada uno de los elementos almacenados. No admite duplicados y los elementos aparecen SIEMPRE ordenados en base a su clave.

Luego hay variantes para set y map que admiten duplicados, pero dudo que en tu caso tengas que usarlos.

Para que te funcione lo que propones tienes que embeber tu pareja dentro de uno de los contenedores, de esta forma podrás almacenar múltiples parejas.

La forma de localizar un elemento variará dependiendo del contenedor elegido:

* vector
Código C++:
Ver original
  1. pareja p1 = { "hola", 3.45 };
  2. pareja p2 = { "adios", 45.8 };
  3.  
  4. typedef std::pair< std::string, double > pareja;
  5. std::vector< pareja > tabla;
  6.  
  7. tabla.push_back( p1 );
  8. tabla.push_back( p2 );
  9.  
  10. // Búsqueda
  11. std::string elementoABuscar = "adios";
  12. pareja parejaBuscada;
  13. for ( auto it = tabla.begin( ); it != tabla.end( ); ++it )
  14. {
  15.   if ( it->first == elementoABuscar )
  16.   {
  17.     parejaBuscada = *it;
  18.     break;
  19.   }
  20. }
  21.  
  22. std::cout << "Elemento buscado: " << pareja.first << " " << pareja.second << std::endl;

* set
Código C++:
Ver original
  1. pareja p1 = { "hola", 3.45 };
  2. pareja p2 = { "adios", 45.8 };
  3.  
  4. typedef std::pair< std::string, double > pareja;
  5. std::set< pareja > tabla;
  6.  
  7. tabla.insert( p1 );
  8. tabla.insert( p2 );
  9.  
  10. // Búsqueda
  11. std::string elementoABuscar = "adios";
  12. pareja parejaBuscada;
  13. for ( auto it = tabla.begin( ); it != tabla.end( ); ++it )
  14. {
  15.   if ( it->first == elementoABuscar )
  16.   {
  17.     parejaBuscada = *it;
  18.     break;
  19.   }
  20. }
  21.  
  22. std::cout << "Elemento buscado: " << pareja.first << " " << pareja.second << std::endl;

* map
Código C++:
Ver original
  1. pareja p1 = { "hola", 3.45 };
  2. pareja p2 = { "adios", 45.8 };
  3.  
  4. typedef std::pair< std::string, double > pareja;
  5. std::map< std::string, pareja > tabla;
  6.  
  7. tabla.insert( std::make_pair< p1.first, p1 > );
  8. tabla.insert( std::make_pair< p2.first, p2 > );
  9.  
  10. // Búsqueda
  11. std::string elementoABuscar = "adios";
  12. std::cout << "Elemento buscado: " << elementoABuscar << " " << tabla[elementoABuscar] << std::endl;

Hay otras formas de realizar la búsqueda, pero creo que esto sirve para que te hagas una idea.

Un saludo.
  #3 (permalink)  
Antiguo 30/10/2014, 15:52
 
Fecha de Ingreso: octubre-2014
Mensajes: 3
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: pair en c++ se muy poco

Gracias, con esto ya puede hacer lo que queria.

Etiquetas: poco
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:15.