Frage

ich BFS bin der Umsetzung, und was es geht zu tun, gehen durch eine geordnete Baum der kürzesten Lösung für ein Rätsel zu finden.

Was ich tun wird ein Snapshot-Objekt erstellen, das die aktuelle Position jedes Stück in einem Puzzle hält. Ich werde dieses Snapshot-Objekt in die Warteschlange hinzufügen und überprüfen, ob es die Lösung. Allerdings bin ich diese Snapshots on the fly zu erstellen. So ist es eine Art und Weise, die automatisch die Namen der Snapshot-Objekte erzeugt, wenn sie in die Warteschlange gestellt werden?

oder muss ich verfolgen, wie viele Erklärungen habe ich gemacht und nur schwer Code, indem sie sagen ...

Snapshot snapshot2; Snapshot snapshot3; Snapshot snapshot4; etc ..

War es hilfreich?

Lösung

Es gibt einen Weg - Sie nutzen die Preprocessor des Token -Pasting Operator . Dies ermöglicht Ihnen, einen Namen zu schaffen, basierend auf einer Variablen, so würden Sie angeben:

#define S(variable) snapshot#variable

, und Sie würden in der Lage Variablen namens snapshot1 zu erstellen, snapshot2 etc:

Snapshot S(1)
Snapshot S(2)

Allerdings bin ich nicht sicher, das ist, was Sie wirklich wollen, habe ich vielleicht diese Technik einmal in der Praxis, und das war für einen Code-Generator.

Andere Tipps

Ich glaube, Sie zu fragen, wie erstellen Sie und halten viele Objekte, wenn Sie nicht wissen, wie viele es sein wird.

Sie müssen eine Reihe von Objekten erstellen. Dann können Sie sie als Snapshot zugreifen [1], snapshot [2] ... snapshot [i].

Sie können eine Warteschlange aus der Standard-Template-Bibliothek verwenden, dann eine Funktion erstellen, die ein Snapshot-Objekt erstellt und legt in die Warteschlange in. Geben Sie diese Funktion eine statische Variable, die jedes Mal erhöht wird sie genannt und geschrieben in ein ID-Feld des Schnappschusses.

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

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

Ich denke, dass wir mehr Informationen dazu benötigen. Wenn Sie diese einfach aus einer Warteschlange Knallen, warum kümmert, was sie benannt sind? Objekte in einer Warteschlange sind normalerweise nicht nummeriert, wenn Sie es in einem Array sind implementiert.

Leider ist die ganze Warteschlange, was bewirkt, dass ein bisschen uneeded Verwirrung.

Nehmen wir ein anderes Beispiel. Also, für dieses Rätsel, die Anzahl der Teile im Puzzle vom Benutzer festgelegt. So wie ich das Programm bin der Gestaltung ist, dass jedes Stück des Puzzles sein eigenes Objekt ist.

Also, wenn ich mich über diese Stücke zu schaffen, kann ich eine Art variable Namensgebung verwenden, um über die Benennung dieser Stücke zu gehen. so etwas wie dies nur als Beispiel ...

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

Sie können nicht dynamisch Variablennamen in C ++ erstellen, zumindest nicht ohne einige (imaginär?) Add-on.

edit: Als Nebenwirkung ich einen Auftrag habe, die ich annehmen zu Ihnen in einer AI-Klasse ähnlich ist, wo wir Grundlagen wie BFS, DFS abgedeckt und A *. Nicht ein einziges Mal war es notwendig, eindeutig benannte Objekte für die „Schnappschüsse“ zu haben, und ich Warteschlangen.

edit2: und wenn Sie den Überblick behalten müssen, wie viele Snapshots Sie haben, eine Zählvariable erstellen, die jedes Mal, wenn Sie das Objekt erstellen erhöht

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top