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
Ir a la versión completa