Map
Es una colección de pares clave-valor, donde cada clave es única y las claves y valores están ordenados en función de la clave. No tiene acceso directo a los elementos por índice.
int main()
{
// Declara un mapa vacío de pares de enteros.
std::map<int, int> map;
// Asocia elementos al mapa.
map[1] = 10;
map[2] = 20;
map[3] = 30;
// Imprime los pares del mapa.
for (std::map<int, int>::iterator it = map.begin(); it != map.end(); ++it)
std::cout << "(" << (*it).first << ", " << (*it).second << ") ";
std::cout << std::endl;
// Borra el segundo par del mapa.
map.erase(map.find(2));
// Agrega un nuevo par (4, 42) al mapa.
map[4] = 42;
// Imprime los pares del mapa actualizado.
for (std::map<int, int>::iterator it = map.begin(); it != map.end(); ++it)
std::cout << "(" << (*it).first << ", " << (*it).second << ") ";
std::cout << std::endl;
return 0;
}
(1, 10) (2, 20) (3, 30)
(1, 10) (3, 30) (4, 42)
map puntero función
#include <iostream>
#include <stdlib.h>
#include <map>
int suma(int a, int b) { return a + b; }
int resta(int a, int b) { return a - b; }
int mult(int a, int b) { return a * b; }
int main(int argc, char **argv)
{
if (argc != 4)
{
std::cout << "ejemplo: \"2\" \"x\" \"5\"" << std::endl;
return 1;
}
char str = argv[2][0];
int a = atoi(argv[1]);
int b = atoi(argv[3]);
std::map<char, int (*)(int, int)> map;
// Asocia elementos al mapa.
map['+'] = &suma;
map['-'] = &resta;
map['x'] = &mult;
std::map<char, int (*)(int, int)>::iterator it = map.find(str);
if (it != map.end())
{
int resultado = (it->second)(a, b);
std::cout << a << str << b << " = " << resultado << std::endl;
}
else
std::cout << "NotFound" << std::endl;
return 0;
}
Se declara un
std::map
llamadomap
que asocia caracteres (char
) con punteros a funciones que toman dos enteros y devuelven un entero (int (*)(int, int)
).Se asocian funciones específicas con caracteres en el mapa.
Se utiliza
map.find(str)
para buscar el caracterstr
en el mapa.Si se encuentra, se llama a la función asociada utilizando
(it->second)(a, b)
dondeit->second
es el puntero a la función encontrada.Se imprime el resultado.
En el código proporcionado, las funciones asociadas son suma
, resta
, y mult
. Dependiendo del valor de str
, se llamará a una de estas funciones con los valores de a
y b
. Por ejemplo, si str
es '+'
, se llamará a la función suma(a, b)
.
Métodos (C++98)
begin()
yend()
: Devuelven iteradores al principio y final del mapa, respectivamente.empty()
: Devuelvetrue
si el mapa está vacío, de lo contrario devuelvefalse
.size()
: Devuelve el número de pares en el mapa.clear()
: Elimina todos los pares del mapa.insert(value_type)
: Añade un par al mapa. La sintaxis es la siguiente:map.insert({key, value})
.find(const key_type&)
: Devuelve un iterador al primer par cuya clave coincida con la especificada. Si no hay ningún par que cumpla esta condición, devuelve el final del mapa.erase(iterator)
: Elimina el par al que apunta el iterador.count(const key_type&)
: Devuelve el número de pares en el mapa cuya clave coincida con la especificada.lower_bound(const key_type&)
: Devuel un iterador al principio del rincón donde se podría insertar una pare con la especificada clave mayor que cual clave exista en el mapa. Si no hay ningún par con esta clave, devuela el final del mapa.