내 교과 과정을 위해 대기열 구현을 작성하려고합니다.대기열에서 요소를 검색하는 것이 작동하지 않습니다. 검색 방법에 문제가 있습니까?
template<class GenericType>
void QueueType<GenericType>::Enqueue(GenericType item) {
if (isFull()) {
}
else{
rear = (rear + 1) % maxQue;
items[rear] = item;
}
}
과 : 여기
관련되는 부분이다 나는 또한 클래스가합니다 MyType 불렀다template<class GenericType>
void QueueType<GenericType>::Dequeue(GenericType &item){
if(isEmpty()){
}else{
front = (front + 1) & maxQue;
item = items[front];
}
}
이것은 단지 하나 개의 공공 유형 필드가 있습니다 INT 및 필드 이름 : 값.
그래서 :
int main(int argc, char** argv) {
MyType myOne;
myOne.value = 1;
MyType variable;
QueueType<MyType> myQ();
myQ.Enqueue(myOne);
myQ.Dequeue(variable);
cout<<variable.value;
}
이 코드를 실행하면, 내가 얻을 값은 다음과 같습니다 : 0는하지만 1 할을 기대하고
class MyType{
int value;
}
그리고 여기 내 주요 방법이다?
누구나 내가 놓친 내용을 설명해 주실 수 있습니까?
작은 편집 : 항목을 검색하기 전에 코드가 향상된다는 사실이 맞습니다. 정면은 -1로 초기화됩니다.
나는 또한 당신이 일반적으로 검토하고 싶은 몇 가지 것을 볼 수있다. 첫째, 큐에서 모듈러 산술 연산을 수행한다면 충만 함을 검사하는 이유는 무엇입니까? 이 두 가지 전략은 상호 배타적 인 것처럼 보이며, 어떤 종류의 수집에 대해서도 모듈 식 산술은 물론 불투명 해 보이지 않습니다. 또한, 앞 계산에서 & 대신 %를 말하려고 했습니까? – RonaldBarzell
고마워요.하지만 처음에는 앞쪽에 -1이 있기 때문에 그게 아니라고 생각합니다. 괜찮아. –
@ user1161318 대기열이 가득 찬 경우 (생성자에 제한이 있기 때문에) 대기열에 아무 것도 추가하지 않아야하기 때문입니다. –