Das ist wirklich interessant, weil unser Lehrer uns das gestern beigebracht hat und er es selbst nicht herausfinden konnte. Also hängen wir irgendwie daran, ohne den tatsächlichen Grund zu kennen. HierWarum ein Array der Größe 1 mehr als die angeforderte Größe zuweisen?
ist die Array-Implementierung einer Queue in einem berühmten Buch (was ich nicht habe, aber das ist, was mein Lehrer sagte der Autor ist sehr renommiert.):
class QUEUE {
private:
int* q;
int N;
int head;
int tail;
public:
QUEUE(int maxN) {
q = new int[maxN + 1];
N = maxN + 1; head = N; tail = 0;
}
int empty() const {
return head % N == tail;
}
void put(int item) {
q[tail++] = item; tail = tail % N;
}
int get() {
head = head % N; return q[head++];
}
};
Innerhalb des Konstruktor , sehen Sie q = new int[maxN + 1];
. Aber warum die '+ 1'? Warum reserviert er einen zusätzlichen int-Speicherblock?
Das Buch ist von Robert Sedgewick BTW. –