Sie müssen keine Vektoren verwenden. Wenn Sie bei einfachen Arrays bleiben möchten, können Sie Folgendes tun:
int arr[] = new int[15];
unsigned int arr_length = 0;
Wenn Sie nun am Ende des Arrays ein Element hinzufügen möchten, können Sie Folgendes tun:
if (arr_length < 15) {
arr[arr_length++] = <number>;
} else {
}
Es ist nicht so kurz und anmutig wie das PHP-Äquivalent, aber es erreicht das, was Sie versucht haben. Um die Größe des Arrays in Zukunft einfach ändern zu können, können Sie ein #define verwenden.
#define ARRAY_MAX 15
int arr[] = new int[ARRAY_MAX];
unsigned int arr_length = 0;
if (arr_length < ARRAY_MAX) {
arr[arr_length++] = <number>;
} else {
}
Dies erleichtert die zukünftige Verwaltung des Arrays erheblich. Durch Ändern von 15 auf 100 wird die Arraygröße im gesamten Programm ordnungsgemäß geändert. Beachten Sie, dass Sie das Array auf die maximal erwartete Größe einstellen müssen, da Sie es nach dem Kompilieren des Programms nicht mehr ändern können. Wenn Sie beispielsweise ein Array der Größe 100 haben, können Sie niemals 101 Elemente einfügen.
Wenn Sie Elemente am Ende des Arrays verwenden, können Sie Folgendes tun:
if (arr_length > 0) {
int value = arr[arr_length--];
} else {
}
Wenn Sie Elemente von Anfang an löschen möchten (z. B. ein FIFO), wird die Lösung komplizierter. Sie benötigen auch einen Anfangs- und einen Endindex.
#define ARRAY_MAX 15
int arr[] = new int[ARRAY_MAX];
unsigned int arr_length = 0;
unsigned int arr_start = 0;
unsigned int arr_end = 0;
if (arr_length < ARRAY_MAX) {
arr[arr_end] = <number>;
arr_end = (arr_end + 1) % ARRAY_MAX;
arr_length ++;
} else {
}
if (arr_length > 0) {
int value = arr[arr_start];
arr_start = (arr_start + 1) % ARRAY_MAX;
arr_length --;
} else {
}
if (arr_length > 0) {
int value = arr[arr_end];
arr_end = (arr_end + ARRAY_MAX - 1) % ARRAY_MAX;
arr_length --;
} else {
}
Hier verwenden wir den Moduloperator (%), um zu bewirken, dass die Indizes umbrochen werden. Zum Beispiel ist (99 + 1)% 100 0 (ein Umbruchinkrement). Und (99 + 99)% 100 ist 98 (ein Umbruchdekrement). Auf diese Weise können Sie if-Anweisungen vermeiden und den Code effizienter gestalten.
Sie können auch schnell erkennen, wie hilfreich die #define ist, wenn Ihr Code komplexer wird. Leider können Sie selbst mit dieser Lösung niemals mehr als 100 Elemente (oder ein von Ihnen festgelegtes Maximum) in das Array einfügen. Sie verwenden auch 100 Byte Speicher, selbst wenn nur 1 Element im Array gespeichert ist.
Dies ist der Hauptgrund, warum andere Vektoren empfohlen haben. Ein Vektor wird hinter den Kulissen verwaltet und neuer Speicher wird zugewiesen, wenn sich die Struktur erweitert. Es ist immer noch nicht so effizient wie ein Array in Situationen, in denen die Datengröße bereits bekannt ist, aber für die meisten Zwecke sind die Leistungsunterschiede nicht wichtig. Jeder Ansatz hat Kompromisse und es ist am besten, beide zu kennen.