Domanda

Sto implementando un BFS, e quello che sta per fare è passare attraverso un albero ordinato per trovare la soluzione più breve a un puzzle.

Quello che farò è creare un oggetto Snapshot che mantenga la posizione corrente di ogni pezzo in un puzzle. Aggiungerò questo oggetto Snapshot nella coda e controllerò se è la soluzione. Tuttavia, sto creando queste istantanee al volo. Quindi esiste un modo per generare automaticamente i nomi degli oggetti Snapshot quando vengono messi in coda?

o devo tenere traccia di quante dichiarazioni ho fatto e codificare semplicemente dicendo ...

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

È stato utile?

Soluzione

C'è un modo: usi il Token del preprocessore -Pasting Operator . Ciò ti consente di creare un nome basato su una variabile, quindi dovresti specificare:

#define S(variable) snapshot#variable

e saresti in grado di creare variabili denominate snapshot1, snapshot2 etc:

Snapshot S(1)
Snapshot S(2)

Tuttavia, non sono sicuro che questo sia quello che vuoi davvero, forse ho usato questa tecnica una volta in pratica, ed era per un generatore di codice.

Altri suggerimenti

Penso che tu ti stia chiedendo come creare e conservare molti oggetti quando non sai quanti ce ne saranno.

Devi creare un array di oggetti. Quindi puoi accedervi come istantanea [1], istantanea [2] ... istantanea [i].

È possibile utilizzare una coda dalla libreria di modelli standard, quindi creare una funzione che crea un oggetto Snapshot e lo inserisce nella coda. Assegna a questa funzione una variabile statica che viene incrementata ogni volta che viene chiamata e scritta in un campo ID dell'istantanea.

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

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

Penso che abbiamo bisogno di maggiori informazioni per questo. Se stai semplicemente saltando fuori da una coda, perché ti importa come si chiamano? Gli oggetti in una coda non sono normalmente numerati, a meno che non vengano implementati in un array.

Siamo spiacenti, l'intera cosa della coda provoca confusione non necessaria.

Facciamo un altro esempio. Quindi, per questo puzzle, il numero di pezzi nel puzzle è specificato dall'utente. Il modo in cui sto progettando il programma è che ogni pezzo del puzzle è il proprio oggetto.

Quindi, quando vado a creare questi pezzi, posso usare qualche tipo di schema di denominazione variabile per dare un nome a questi pezzi. quindi qualcosa del genere solo come esempio ...

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

Non è possibile creare dinamicamente nomi di variabili in C ++, almeno non senza un componente aggiuntivo (immaginario?).

modifica: A parte questo, ho svolto un compito che presumo sia simile al tuo in una classe AI, in cui abbiamo trattato concetti di base come BFS, DFS e A *. Non è stato necessario disporre di oggetti con un nome univoco per le "quotazioni" e ho usato le code.

edit2: e se devi tenere traccia di quante Snapshot hai, crea una variabile di conteggio che aumenta ogni volta che crei l'oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top