Programación General > C/C++

 Acceder a objetos atraves de un array

(1/1)

Alfonsos1:
Quiero hacer un array doble de 200*200, osea que en total va a tener 40000 "espacios".
Voy a presisar una cantidad indefinida de objetos, la cual puede aumentar o disminuir durante el programa, pero supongamos que van a ser alrrededor de 300 objetos.
Cada objeto va a tener una cordenada X y otra cordenada Y, y nececito poder acceder a ese objeto atraves del array. La ubicacion del objeto en el array dependera de sus cordenadas.
Devido a que son solo 300 objetos, habran espacios en el array que no corresponderan a ningun objeto.

LO QUE PRECISO:
Lo que quiero saber es como acceder a un objeto atraves de un array. En otras palabras: organizar los objetos en un array.

RAZON POR LA QUE PRECISO ESO:
Preciso esto para poder aceder a las variables de un objeto conociendo unicamente sus cordenadas.

Geo:
¿Puedes ser más específico con tu duda? Un array de objetos que tú hayas creado se declara tal cual como un array de tipos ya definidos como int, char, etc.
Y para acceder a ellos los indicas mediante índices del array:


--- Código: C --- int array[ 10 ][ 10 ];array[ 5 ][ 5 ] = 45; Objeto arrayDeObjetos[ 200 ][ 200 ];arrayDeObjetos[ 120 ][ 100 ].variable = x;y = arrayDeObjetos[ 30 ][ 23 ].variable;  

alb:
Holà,
Me parece que utilizar una array de 40000 espacios par solo 300 objetos nos es lo mas appropriado.
Porque no proponer un container dedicado que puede utilizar una std::map con la llave siendo une std::pair de las cordenadas. En vez de utilizar el operador [] utilizas el operador() para obtener un elemento.
Algo asi :

--- Código: C++ ---#include <map>#include <utility> template<typename key_t_,typename my_data_t_>struct my_container{    my_data_t_& operator()(key_t_ x_, key_t_ y_)    {        return my_set[std::make_pair(x_,y_)];    }     my_data_t_ const & operator()(key_t_ x_, key_t_ y_) const    {        return my_set[std::make_pair(x_,y_)];    }     private:    std::map<std::pair<key_t_,key_t_>,my_data_t_> my_set;}; struct dummy {}; int main(){    my_container<int,dummy> cont;    cont(1,2) = dummy();    return 0;} 

Navegación

[0] Índice de Mensajes

Ir a la versión completa