gpt4 book ai didi

c - 在 C 中移动数组的最佳方法?

转载 作者:太空狗 更新时间:2023-10-29 17:01:10 26 4
gpt4 key购买 nike

我有一个保存值历史记录的数组,当添加新值时,我需要将所有先前的值向左移动一个位置,以释放最旧的值并为下一个值腾出空间。

我可以想到两种方法,使用 memmove:

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

或者通过交换指针:

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

这两种方法之间是否存在性能差异,如果没有,建议使用哪一种?

最佳答案

有一个更快的选择:

A circular buffer其中插入、删除和读取都是 O(1)。

关于c - 在 C 中移动数组的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18575090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com