Pregunta

Estoy implementando un BFS, y lo que vamos a hacer es pasar por un árbol ordenado para encontrar la solución más corta a un rompecabezas.

Lo que haré es crear un objeto de instantánea que mantenga la posición actual de cada pieza en un rompecabezas. Agregaré este objeto de instantánea en la cola y comprobaré si es la solución. Sin embargo, estoy creando estas instantáneas sobre la marcha. Entonces, ¿hay algún tipo de manera que genere automáticamente los nombres de los objetos Snapshot cuando se ponen en la cola?

o tengo que hacer un seguimiento de la cantidad de declaraciones que he hecho y simplemente codificarlo diciendo ...

Instantánea instantánea2; Instantánea instantánea3; Instantánea instantánea4; etc.

¿Fue útil?

Solución

Hay una forma: use Token del preprocesador - Operador de degustación . Esto le permite crear un nombre basado en una variable, por lo que debe especificar:

#define S(variable) snapshot#variable

y podrás crear variables llamadas snapshot1, snapshot2, etc.:

Snapshot S(1)
Snapshot S(2)

Sin embargo, no estoy seguro de que esto sea lo que realmente quieres, tal vez haya usado esta técnica una vez en la práctica, y eso fue para un generador de código.

Otros consejos

Creo que estás preguntando cómo creas y mantienes muchos objetos cuando no sabes cuántos habrá.

Es necesario crear una matriz de los objetos. Luego puede acceder a ellos como instantánea [1], instantánea [2] ... instantánea [i].

Podría usar una cola de la biblioteca de plantillas estándar, luego crear una función que cree un objeto de instantánea y se coloque en la cola. Dale a esta función una variable estática que se incrementa cada vez que se llama y se escribe en un campo de identificación de la instantánea.

http://www.csci.csusb.edu/dick/samples /stl.html

http://www.cppreference.com/wiki/stl/queue/start

Creo que necesitamos más información para esto. Si simplemente estás saliendo de una cola, ¿por qué te importa cómo se llaman? Los objetos en una cola normalmente no están numerados, a menos que lo esté implementando en una matriz.

Lo siento, todo el asunto de la cola causa un poco de confusión.

Tomemos otro ejemplo. Entonces, para este rompecabezas, la cantidad de piezas en el rompecabezas está especificada por el usuario. La forma en que estoy diseñando el programa es que cada pieza del rompecabezas es su propio objeto.

Entonces, cuando voy creando estas piezas, ¿puedo usar algún tipo de esquema de nombres de variable para nombrar estas piezas? así que algo como esto es solo un ejemplo ...

for (int i-0; i < constraint; i++)
Piece "Piece"+i = new Piece();

No puede crear dinámicamente nombres de variables en C ++, al menos no sin algún complemento (¿imaginario?).

edit: aparte, hice una tarea que asumo que es similar a la tuya en una clase de AI, donde cubrimos aspectos básicos como BFS, DFS y A *. Ni una sola vez fue necesario tener objetos con un nombre único para las " instantáneas " ;, y utilicé colas.

edit2: y si necesita realizar un seguimiento de cuántas instantáneas tiene, cree una variable de conteo que se incremente cada vez que cree el objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top