Meilleur moyen de modifier un tableau en C?

J'ai un tableau qui contient une histoire de valeurs, et lors de l'ajout d'une nouvelle valeur, j'ai besoin de changer toutes les valeurs précédentes d'une position vers la gauche, perdre de la valeur la plus ancienne et faire de la place pour la prochaine.

Je pense à deux manières de le faire, en utilisant memmove:

memmove(&arr[0], &arr[1], sizeof(arr) - sizeof(*arr));

Ou en échangeant les pointeurs:

for (i = 0; i != sizeof(arr) - 1; i++) {
   *(arr + i) = *(arr + i + 1);
}

Est-il une différence de performance entre les deux méthodes, et si non, que l'on serait conseillé?

Avez-vous envisagé de ne pas utiliser un tableau pour ce ou n'est-ce pas une option?
J'ai besoin de garder une trace de la dernière valeurs de X, donc je ne peux pas penser à tout plus logique de les stocker à l'exception d'un tableau.
Utiliser une file d'attente (vous pouvez toujours utiliser un tableau pour la mise en œuvre), et d'éviter à la mémoire de la copie. thelearningpoint.net/computer-science/...
Pourquoi ne pas utiliser un double-clos liste? De cette façon, vous obtenez O(X) la complexité de l'accès à vos X éléments, mais l'insertion d'éléments par voie rapide. Ce qui fonctionne le mieux à la fin dépend de l'application. Ne vous insérez un lot ou avez-vous accès à un grand nombre?
Ou de l'utilisation d'un tampon circulaire (garder un int head d'index et de faire tous les accès % arraySize).

OriginalL'auteur Muis | 2013-09-02