1
대기열에 사용 된 배열의 내용을 인쇄하는 데 문제가 있습니다.대기열에 배열 인쇄
내 템플릿 큐의 일부 :
#include <iostream>
#include <cstdlib>
using namespace std;
template<class T>
class Queue
{
private:
int front; //front position
int rear; //rear position
int maxQue; //maximum number of elements in the queue
T* items; //points to a dynamically-allocated array code here
public:
Queue() // default constructor: Queue is created and empty
{
front = -1;
rear = 0;
maxQue = 10;
items = new T[maxQue];
}
void Print() // print the value of all elements in the queue
{
while(front != rear)
{
cout<<items[front];
front++;
if(front==rear)
break;
cout<<" - ";
}
cout<<endl;
}
void Enqueue(T add) // insert x to the rear of the queue
{ // Precondition: the queue is not full
if(IsFull())
{
cout<<"Queue is full!"<<endl;
}
else
{
items[rear] = add;
rear++;
rear = rear % maxQue;
}
}
void Dequeue(T &x) // delete the element from the front of the queue
{ // Precondition: the queue is not empty
if(!IsEmpty())
{
front = (front+1)%maxQue;
x = items[front];
}
}
bool IsEmpty() // test if the queue is empty
{
return (rear==front);
}
bool IsFull() // test if the queue is full
{
return ((rear+1)%maxQue==front);
}
int length() // return the number of elements in the queue
{
return abs(rear-front);
}
~Queue() // Destructor: memory for the dynamic array needs to be deallocated
{
delete [] items;
}
};
메인 루틴의 일부 :
int main()
{
Queue<float>FloatQueue;
float y;
FloatQueue.MakeEmpty();
FloatQueue.Dequeue(y);
FloatQueue.Enqueue(7.1);
cout << "float length 3 = " << FloatQueue.length() << endl;
FloatQueue.Enqueue(2.3);
cout << "float length 4 = " << FloatQueue.length() << endl;
FloatQueue.Enqueue(3.1);
FloatQueue.Dequeue(y);
cout << "The float queue contains: ";
FloatQueue.Print();
return 0;
}
가되는 시점에서 나는 이러한 오류를 얻을 인쇄하려고 할 때까지 코드는 벌금 컴파일 .
0 00000000 0x00466a7f in std::__convert_from_v() (??:??)
1 00000000 0x00430302 in std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::_M_insert_float<double>() (??:??)
2 00000000 0x00430da8 in std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> > >::do_put() (??:??)
3 00000000 0x00447455 in std::ostream::_M_insert<double>() (??:??)
4 00000000 0x00448988 in std::ostream::operator<<() (??:??)
5 0041CB37 Queue<float>::Print(this=0x28ff00)
저는 며칠 동안이 문제에 봉착했습니다. 도움을 주시면 감사하겠습니다.
#include을 잊어 버리셨습니까? –
oh yea 그리고'std :: cout'을 사용하고 ** 사용하지 말라.'#using namespace std; ' –
#include을 가지고 있었고, 내 게시물을 편집 할 것이다. #using 네임 스페이스 std가없는 이점은 무엇입니까? 나는 C++에 다소 익숙하다. –