Ver Mensaje Individual
  #5 (permalink)  
Antiguo 09/02/2015, 08:58
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 2 meses
Puntos: 204
Respuesta: [Consulta]Tile Map.¿Mejor std::vector o array?

Cita:
Iniciado por vangodp Ver Mensaje
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 original
  1. std::map< int, std::map< int, std::string > > tablero;
  2.  
  3. // Acceso a la coordenada 3, 4
  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 original
  1. std::map< std::pair< int, int >, std::string > tablero;
  2.  
  3. // Acceso a la coordenada 3, 4
  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 original
  1. class Tablero
  2. {
  3.   public:
  4.  
  5.    /* ... */
  6.  
  7.    std::string& Valor( int fila, int columna)
  8.    { return _datos[ std::make_pair( fila, columna ) ]; }
  9.  
  10.   private:
  11.  
  12.     std::map< std::pair< int, int >, std::string > _datos;
  13. };
  14.  
  15. int main( )
  16. {
  17.   Tablero tablero;
  18.   tablero.Valor( 3, 4 ) = "Aquí va el bicho";
  19.   std::cout << tablero.Valor( 3, 4 );
  20. }

Última edición por eferion; 09/02/2015 a las 09:08