Dlaczego mi się jakieś zera wypisaują przy zdejmowaniu z kolejki
#include <iostream>
#include <stdexcept>
using namespace std;
template <typename T, int POJEMNOSC>
class Kolejka {
T kolejka[POJEMNOSC];
int ostatni;
public:
Kolejka()
: ostatni(-1){};
void wloz(const T);
T zdejmij();
};
template <typename T, int POJEMNOSC>
void Kolejka<T, POJEMNOSC>::wloz(const T value)
{
if (ostatni < POJEMNOSC - 1) {
kolejka[++ostatni] = value;
cout << "dodalem(" << kolejka[ostatni] << ")\n";
}
else
throw std::out_of_range("Za duza kolejka!");
}
template <typename T, int POJEMNOSC>
T Kolejka<T, POJEMNOSC>::zdejmij()
{
if (ostatni >= 0) {
int i = -1;
cout << "usunolem(" << kolejka[0] << ")\n";
while (++i < ostatni)
kolejka[i] = kolejka[i + 1];
}
else
throw std::out_of_range("Kolejka pusta!");
}
int main()
{
cout << "Kolejka:(double)" << endl;
Kolejka<double, 3> k;
k.wloz(2.4);
k.wloz(5.0);
k.wloz(1.5);
cout << k.zdejmij() << endl;
cout << k.zdejmij() << endl;
cout << k.zdejmij() << endl;
}
2 pytańko:
co to za dziwna definicja
void Stos<T,POJEMNOSC>::push(T const& value)
bo widziałem coś takiego ale nie rozumiem argumentu który ta funkcja przyjmuje, jeśli przekaże zmienną double
to T=double
więc double const& value - więc nie rozumiem, tego co to znaczy
wywołanie:objekt_kolejka.push(2.4);