Cita:
Iniciado por vangodp En principio es para un mapa de tamaño fijo pero el poder re dimensionar quizás me sirva luego mas adelante, por eso pregunto, no tengo mucha experiencia con las STL XDD
Si tu idea es, por ejemplo, mapear un tablero, puedes hacerlo de varias maneras. Por ejemplo con un mapa anidado:
Código C++:
Ver originalstd::map< int, std::map< int, std::string > > tablero;
// Acceso a la coordenada 3, 4
tablero[3][4] = "aqui va el bicho";
En el ejemplo estamos sacrificando algo de rendimiento en beneficio de la legibilidad... pero también podemos optar por el rendimiento sacrificando un poco la legibilidad del código:
Código C++:
Ver originalstd::map< std::pair< int, int >, std::string > tablero;
// Acceso a la coordenada 3, 4
tablero[ std::make_pair( 3, 4 ) ] = "aqui va el bicho";
Esta segunda opción es más eficiente porque la llamada "make_pair" es mucho más ligera que tener mapas anidados, que era lo que sucedía en el primer ejemplo.
Por supuesto, esto se puede encapsular en un objeto para que su uso sea algo más natural:
Código C++:
Ver originalclass Tablero
{
public:
/* ... */
std::string& Valor( int fila, int columna)
{ return _datos[ std::make_pair( fila, columna ) ]; }
private:
std::map< std::pair< int, int >, std::string > _datos;
};
int main( )
{
Tablero tablero;
tablero.Valor( 3, 4 ) = "Aquí va el bicho";
std::cout << tablero.Valor( 3, 4 );
}