Pergunta

Estou implementando um BFS, eo que ele vai fazer é passar por uma árvore ordenada para encontrar a solução mais curto para um quebra-cabeça.

O que eu vou fazer é criar um objeto Snapshot que mantém a posição atual de cada peça em um quebra-cabeça. Vou adicionar este objeto Snapshot na fila e verificar se ele é a solução. No entanto, eu estou criando esses instantâneos na mosca. Então, há algum tipo de forma que irá gerar automaticamente os nomes do Snapshot objetos quando eles são colocados em fila?

ou eu tenho que manter o controle de quantas declarações que eu fiz e apenas difícil de código-lo dizendo ...

Snapshot Fotografia2; Snapshot snapshot3; Snapshot snapshot4; etc ..

Foi útil?

Solução

Há uma maneira - você usa o token de Preprocessor -Pasting Operador . Isso permite que você crie um nome baseado em uma variável, assim que você especificar:

#define S(variable) snapshot#variable

e você seria capaz de criar variáveis ??instantâneo1 nomeado, Fotografia2 etc:

Snapshot S(1)
Snapshot S(2)

No entanto, eu não tenho certeza que isso é o que você realmente quer, eu talvez usou essa técnica uma vez em prática, e que foi para um gerador de código.

Outras dicas

Eu acho que você está perguntando como você criar e manter os lotes de objetos quando você não sabe quantas haverá.

Você precisa criar uma matriz dos objetos. Depois, você pode acessá-los como snapshot [1], instantâneo [2] ... snapshot [i].

Você pode usar uma fila a partir da biblioteca modelo padrão, em seguida, criar uma função que cria um objeto e coloca Snapshot em na fila. Dê esta função uma variável estática que é incrementado cada vez que é chamado e escrito em um campo id do instantâneo.

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

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

Eu acho que precisamos de mais informações para isso. Se você está simplesmente estalar estes para fora de uma fila, por que você se importa o que eles são chamados? Objetos em uma fila normalmente não são contados, a menos que você esteja implementando-lo em uma matriz.

Infelizmente, a coisa toda fila de meio causa confusão uneeded.

Vamos dar outro exemplo. Portanto, para este quebra-cabeça, o número de peças do quebra-cabeça são especificados pelo usuário. A maneira que eu estou projetando o programa é que cada peça do quebra-cabeça é o próprio objeto.

Então, quando eu ir sobre como criar estas peças, posso usar algum tipo de esquemas de nomeação de variáveis ??para ir sobre nomear essas peças. assim que algo como isto apenas como um exemplo ...

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

Você não pode criar dinamicamente nomes de variáveis ??em C ++, pelo menos não sem alguma (imaginário?) Add-on.

edit: Como um aparte, eu fiz uma atribuição que eu assumo é semelhante à sua em uma classe AI, onde cobrimos básico, como BFS, DFS, e A *. Nem uma vez que foi necessário ter objetos com nomes exclusivos para os "instantâneos", e eu usei filas.

edit2:. E se você precisa manter o controle de quantos instantâneos você tiver, crie uma variável de contagem que aumenta cada vez que você criar o objeto

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top