Ich habe ein Array, das eine Geschichte von Werten enthält, und wenn ich einen neuen Wert hinzufüge, muss ich alle vorherigen Werte um eine Position nach links verschieben, um den ältesten Wert zu verlieren und Platz für den nächsten zu schaffen.Die beste Methode, um ein Array in C zu verschieben?
Ich denke an zwei Möglichkeiten, dies zu tun, durch memmove mit:
memmove(&arr[0], &arr[1], sizeof(arr) - sizeof(*arr));
Oder durch die Zeiger Swapping:
for (i = 0; i != sizeof(arr) - 1; i++) {
*(arr + i) = *(arr + i + 1);
}
ein Performance-Unterschied zwischen den beiden Methoden ist es, und wenn nicht, welcher wäre beraten?
Haben Sie darüber nachgedacht, kein Array zu verwenden oder ist das keine Option? – nic
@nic Ich muss die letzten X-Werte verfolgen, daher kann ich mir keine logischere Möglichkeit vorstellen, sie außer einem Array zu speichern. – Muis
Verwenden Sie eine Warteschlange (Sie können immer noch ein Array verwenden, um es zu implementieren) und vermeiden Sie das Kopieren des Speichers. http://www.thelearningpoint.net/computer-science/data-structures-queues--with-c-program-source-code –