Question

Je suis en train de mettre en œuvre un système de fichiers de stockage, et il va parcourir une arborescence ordonnée pour trouver la solution la plus courte à un puzzle.

Ce que je vais faire, c'est créer un objet Snapshot contenant la position actuelle de chaque pièce dans un puzzle. Je vais ajouter cet objet Snapshot dans la file d'attente et vérifier si c'est la solution. Cependant, je crée ces instantanés à la volée. Existe-t-il un moyen de générer automatiquement les noms des objets Snapshot lorsqu’ils sont mis en file d'attente?

ou dois-je garder trace du nombre de déclarations que j’ai faites et juste le coder en dur en disant ...

Snapshot snapshot2; Snapshot Snapshot3; Snapshot Snapshot4; etc ..

Était-ce utile?

La solution

Il existe un moyen - vous utilisez le Jeton de préprocesseur -Past Opérateur . Cela vous permet de créer un nom basé sur une variable. Vous devez donc spécifier:

#define S(variable) snapshot#variable

et vous seriez capable de créer des variables nommées snapshot1, snapshot2, etc.:

Snapshot S(1)
Snapshot S(2)

Cependant, je ne suis pas sûr que ce soit ce que vous voulez vraiment. J'ai peut-être utilisé cette technique une fois dans la pratique, et c'était pour un générateur de code.

Autres conseils

Je pense que vous demandez comment créer et conserver de nombreux objets sans savoir combien il y en aura.

Vous devez créer un tableau d'objets. Ensuite, vous pouvez y accéder comme instantané [1], instantané [2] ... instantané [i].

Vous pouvez utiliser une file d'attente de la bibliothèque de modèles standard, puis créer une fonction qui crée un objet Snapshot et la place dans la file d'attente. Donnez à cette fonction une variable statique qui s’incrémente à chaque appel et est écrite dans un champ id de l’instantané.

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

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

Je pense que nous avons besoin de plus d'informations pour cela. Si vous les sortez simplement d'une file d'attente, pourquoi vous souciez-vous de leur nom? Les objets d'une file d'attente ne sont normalement pas numérotés, sauf si vous l'implémentez dans un tableau.

Désolé, la file d'attente entière crée un peu de confusion.

Prenons un autre exemple. Donc, pour ce casse-tête, le nombre de pièces dans le casse-tête est spécifié par l'utilisateur. La façon dont je conçois le programme est que chaque pièce du puzzle est son propre objet.

Ainsi, lorsque je crée ces morceaux, puis-je utiliser une sorte de système de nommage de variable pour nommer ces morceaux? donc quelque chose comme ça juste comme exemple ...

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

Vous ne pouvez pas créer de manière dynamique des noms de variables en C ++, du moins pas sans un add-on (imaginaire?).

edit: En passant, j’ai effectué une tâche qui, je suppose, est semblable à la vôtre dans une classe d’IA, où nous avons abordé des notions de base telles que BFS, DFS et A *. Pas une seule fois, il n'a été nécessaire d'avoir des objets nommés de manière unique pour les "instantanés", et j'ai utilisé des files d'attente.

edit2: et si vous avez besoin de savoir combien d'instantanés vous avez, créez une variable de nombre qui s'incrémente à chaque fois que vous créez l'objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top