私は値の履歴を保持する配列を持っています。新しい値を追加するときには、以前の値をすべて1つ左にシフトして、最も古い値を失い、次の値を確保します。Cで配列をシフトする最も良い方法は?
私はMEMMOVEを使用することにより、これを行うには二つの方法を考えることができます。
memmove(&arr[0], &arr[1], sizeof(arr) - sizeof(*arr));
またはポインタを交換することにより:
for (i = 0; i != sizeof(arr) - 1; i++) {
*(arr + i) = *(arr + i + 1);
}
は2つの方法の間のパフォーマンスの違いはありますし、場合そうではない、どちらがアドバイスされるだろうか?
これに対して配列を使用しないと思われましたか、それはオプションではありませんか? – nic
@nic最後のX値を追跡する必要があるので、配列を除いてそれらを格納するための論理的な方法は考えられません。 – Muis
キューを使用して(まだ配列を使用して実装することができます)、メモリのコピーは避けてください。 http://www.thelearningpoint.net/computer-science/data-structures-queues--with-c-program-source-code –