문제

나는 BFS를 구현하고 있으며, 그것이 할 일은 순서 대상 나무를 통해 퍼즐에 대한 가장 짧은 솔루션을 찾는 것입니다.

내가 할 일은 퍼즐에서 각 조각의 현재 위치를 유지하는 스냅 샷 객체를 만드는 것입니다. 이 스냅 샷 객체를 큐에 추가하고 솔루션인지 확인합니다. 그러나이 스냅 샷을 즉석에서 만들고 있습니다. 스냅 샷 개체가 대기열에 넣을 때 자동으로 이름을 생성하는 일종의 방법이 있습니까?

아니면 내가 만든 선언 수를 추적하고 말로 하드 코드를 추적해야합니까?

스냅 샷 스냅 샷 2; 스냅 샷 스냅 샷 3; 스냅 샷 스냅 샷 4; 등..

도움이 되었습니까?

해결책

방법이 있습니다 - 당신은 사용합니다 사전 처리기의 토큰 이용 연산자. 이를 통해 변수를 기반으로 이름을 만들 수 있으므로 다음을 지정합니다.

#define S(variable) snapshot#variable

Snapshot1, Snapshot2 등이라는 변수를 만들 수 있습니다.

Snapshot S(1)
Snapshot S(2)

그러나 이것이 당신이 정말로 원하는 것인지 확신하지 못합니다. 아마도이 기술을 한 번 실제로 사용했을 것입니다. 그것은 코드 생성기를위한 것이 었습니다.

다른 팁

나는 당신이 얼마나 많은지 모를 때 당신이 어떻게 많은 물건을 만들고 많은 물건을 유지하고 보관하는지 묻습니다.

객체 배열을 만들어야합니다. 그런 다음 Snapshot [1], Snapshot [2] ... Snapshot [i]로 액세스 할 수 있습니다.

표준 템플릿 라이브러리에서 큐를 사용한 다음 스냅 샷 객체를 생성하고 큐에 넣는 함수를 작성할 수 있습니다. 이 기능을 스냅 샷의 ID 필드로 호출하고 작성할 때마다 증분이 발생하는 정적 변수를 제공하십시오.

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

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

이를 위해 더 많은 정보가 필요하다고 생각합니다. 단순히 이것을 대기열에서 튀어 나오는 경우 왜 이름이 무엇인지 신경 쓰나요? 큐의 객체는 배열에서 구현하지 않는 한 일반적으로 번호가 매겨지지 않습니다.

죄송합니다. 대기열 전체가 혼란을 초래합니다.

또 다른 예를 들어 봅시다. 따라서이 퍼즐의 경우 퍼즐의 조각 수는 사용자가 지정합니다. 내가 프로그램을 디자인하는 방식은 퍼즐의 각 조각이 고유 한 객체라는 것입니다.

그래서이 조각들을 만들 때, 어떤 종류의 변수 명명 체계를 사용 하여이 조각들의 이름을 지정할 수 있습니다. 그러니 예를 들어 이와 같은 것 ...

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

C ++에서 변수 이름을 동적으로 생성 할 수는 없으며, 적어도 일부 (가상?) 애드온이없는 것은 아닙니다.

편집 : 제쳐두고, 나는 BFS, DFS 및 A*와 같은 기본 사항을 다루는 AI 클래스에서 귀하와 비슷하다고 생각하는 과제를 수행했습니다. 한 번은 "스냅 샷"에 대해 독특하게 명명 된 객체를 가질 필요는 없었으며 대기열을 사용했습니다.

EDIT2 : 스냅 샷 수를 추적 해야하는 경우 객체를 만들 때마다 증가하는 카운트 변수를 만듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top