2011-02-19 5 views
0

여러 데이터 세트를 관리하는 데 사용할 수있는 대기열을 작성하려고하는데 어떻게해야할지 모르겠습니다. 간단하게 작동하지 않습니다 queue<queue>을 delaring 다음과 같은 오류 반환 : 그것은 데이터 구조의이 종류를 구현하기 위해, 그렇다면, 내가 그것에 대해 어떻게 가야도 가능STL을 사용하지 않고 대기열을 작성하십시오.

error: type/value mismatch at argument 1 in template parameter list for ‘template<class Type> class queue’ 
main.cpp:18: error: expected a type, got ‘queue’ 
main.cpp:18: error: invalid type in declaration before ‘;’ token 
make: *** [main.o] Error 1 

인가를?

참고 : 표준 템플릿 라이브러리 대신 큐를 직접 코딩해야하는 클래스 할당입니다.

답변

5

대기열에 유형이 있어야합니다. 대기열 대기열을 만드는 중입니다. 따라서 및 > 안에있는 queue 토큰을 유형이 아닌 오류로 읽습니다. queue은 기술적으로 유형이 아닙니다. queue<int>은 유형입니다.

고유 한 대기열 클래스 또는 자체 대기열 클래스 대기열을 작성 하시겠습니까? 내가 조언하고자하는 것은 당신 자신의 템플릿 큐 클래스를 작성하는 것인데 ... 그 템플릿을 값 타입으로 인스턴스화한다.

대기열의 큐는 int입니까? queue< queue<int> >. 이것이 STL 대기열인지 자체 대기열인지 여부.

참고 : 다른 서식 파일의 매개 변수로 서식 파일 유형을 사용하는 경우에는 그 주위에 공백을 넣어야합니다. 이는 queue<queue<int>>>>이 구문 분석시 "최대 뭉크"규칙으로 인해 >> 연산자로 해석되기 때문입니다. 완전히 무관 한 노트, 단어 큐를 쓰면서 여러 번 눈을 깜박이기 시작합니다 ...

+0

+1. "대기열 대기열"을 만들지 마십시오. 그 대기열을 템플릿으로 원할 수도있는 어떤 것이라도 허용하십시오. 대기열 이 최선의 방법입니다. – vdsf

0

queue<queue<int> >과 같이 두 번째 대기열의 유형을 정의해야 대기열의 대기열을 가질 수 있습니다.

+0

파서에서 "최대 뭉크"는 끝에있는'>> '이'>>'연산자로 해석된다는 것을 의미합니다. 두 개의'>'사이에 공백이 있어야만 C++ 파서/컴파일러에 대한 두 개의 토큰으로 해석되도록 할 수 있습니다. –

+0

@Sion : Visual Studio 2010에는 해당되지 않습니다.;) 모든 컴파일러에서 작동하도록 편집합니다. – Xeo

+0

정말요? 허, 나는 2010 년을 사용하고 있었고, 습관적으로 사용하지 않았다. 단. –

1

특정 오류는 해당 대기열이 템플릿 클래스이므로 사용하는 모든 곳에서 인수를 지정해야합니다. 그러므로 쓰는 것

queue<queue> 

내부 큐가 무엇이든에 의해 paramterized이기 때문에 불법이다.

대기열을 직접 작성하는 것은 가능합니다. 사실, STL 컨테이너 클래스를 작성할 수는 있지만 대기열을 사용하여 시작하는 것이 올바른 방법은 아닙니다. 큐 대기열을 만들려면 간단한 대기열을 만드는 방법에 대해 생각함으로써 시작하십시오. 어떤 구현을 사용 하시겠습니까? 요소 수를 어떻게 추적 하시겠습니까? 동적 배열을 사용하면 효과가 있습니까? 연결 목록, 해시 테이블 또는 이진 검색 트리는 어떻습니까? 각 구조에는 장단점이 있으므로 시작하기 전에 생각해야합니다.

좋은 대기열 구현을 얻은 후에는 대기열을 쉽게 만들 수있는 대기열을 만들기 위해 대기열을 매개 변수화 할 수 있습니다.

호프가 도움이되고 행운을 빕니다.

관련 문제