Я изучаю c ++ и, выполняя следующий код, получаю значение мусора. Я проверил часть алгоритма, и она кажется правильной, но, если это не так, пожалуйста, скажите мне. Я использовал такие функции, как add, чтобы добавить или вставить элемент. , del функция для удаления, пустая функция для очистки очереди и, наконец, у меня есть функция front, работа которой заключается в возвращении front-значения.
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
class Queue {
private :
vector<char> data_;
int front_, rear_;
public :
Queue(): front_(-1),rear_(-1) { data_.resize(20); }
~Queue() {};
int empty() {
if (front_==rear_) {
front_ = rear_ = -1 ;
return 1;
}
else
return 0;
}
void add(char x) {
if (front_ == -1)
front_ = 0 ;
rear_=rear_+1;
data_[rear_]=x;
}
void del( ) {front_=front_+1;}
char front() { return front_ ; }
} ; // End of the class
int main( ) {
Queue q;
char str[20];
cin >> str;
for (int i = 0; i < strlen(str); ++i)
q.add(str[i]);
while (!q.empty()) {
cout << q.front();
q.del();
}
return 0;
}