Código C++:
Ver originalstd::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 originalpareja p1 = { "hola", 3.45 };
pareja p2 = { "adios", 45.8 };
typedef std::pair< std::string, double > pareja;
std::vector< pareja > tabla;
tabla.push_back( p1 );
tabla.push_back( p2 );
// Búsqueda
std::string elementoABuscar = "adios";
pareja parejaBuscada;
for ( auto it = tabla.begin( ); it != tabla.end( ); ++it )
{
if ( it->first == elementoABuscar )
{
parejaBuscada = *it;
break;
}
}
std::cout << "Elemento buscado: " << pareja.first << " " << pareja.second << std::endl;
* set
Código C++:
Ver originalpareja p1 = { "hola", 3.45 };
pareja p2 = { "adios", 45.8 };
typedef std::pair< std::string, double > pareja;
std::set< pareja > tabla;
tabla.insert( p1 );
tabla.insert( p2 );
// Búsqueda
std::string elementoABuscar = "adios";
pareja parejaBuscada;
for ( auto it = tabla.begin( ); it != tabla.end( ); ++it )
{
if ( it->first == elementoABuscar )
{
parejaBuscada = *it;
break;
}
}
std::cout << "Elemento buscado: " << pareja.first << " " << pareja.second << std::endl;
* map
Código C++:
Ver originalpareja p1 = { "hola", 3.45 };
pareja p2 = { "adios", 45.8 };
typedef std::pair< std::string, double > pareja;
std::map< std::string, pareja > tabla;
tabla.insert( std::make_pair< p1.first, p1 > );
tabla.insert( std::make_pair< p2.first, p2 > );
// Búsqueda
std::string elementoABuscar = "adios";
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.