gpt4 book ai didi

C:固定长度数组,转储最旧的、移动并添加最新的

转载 作者:行者123 更新时间:2023-11-30 20:09:22 26 4
gpt4 key购买 nike

我想要一个部分数组和部分固定大小队列的结构:我希望能够将一个数字附加到一端,而另一侧的数字被转储。一直以来,我希望始终能够说出 a[i] 或类似的内容并获取该索引处的值(只是偷看,不会弹出!)。

所以进度应该是这样的:

a={2,3,4} | append a 5
a={3,4,5} | append a 99
a={4,5,99}| now ask for a[1], get 5

等等。 C 中是否有一些内置可以做到这一点或某事。相似的?

EDIT2:目前我正在运行类似的东西,这显然非常依赖于实现,前提是 unsigned char 操作 255+=1 的计算结果为 0:

#include <stdio.h>
#include <limits.h>

unsigned char p =0; // helper that provides the current tail of queue
int a[1 << CHAR_BIT]; // array of size 2^[bit-size of helper]

int from_a(unsigned char i) {
return a[(i+p)]; // addition of helper makes i the true index
}

void append_to_a(int x) {
a[0]=x;
p+=1; // rolling-over of unsigned char provides circularity
}

只是出于兴趣,不是主要问题的一部分:是否有另一种语言具有此功能?

编辑:

该过程应该是自动的(不需要追加..然后弹出/删除/移位..)不需要对现有成员的写访问权限(只需读取,但已建立索引)。

感谢大家回答 C 中没有内置函数并提供替代方案。我实现了一些奇怪的东西,但是双端队列、循环队列/缓冲区和容器是有值(value)的搜索术语。

“感谢”每个人向我保证,在任何图灵完备的环境中,这在某种程度上都是可能的 - 否则我会感到绝望(我的问题是关于内置的,但通用计算机确实可以计算的知识是相当令人欣慰的)。

最佳答案

i would like to be able to append a number to the right (or left) while the oldest number gets dumped. So the progress should look like this: [2,3,4], [3,4,5], [4,5,6], etc. Is there some built-in in C that does that?

不,您必须实现自己的数据结构。

is there a another language that has this?

您可以使用 Deque 轻松执行此类操作。在c++(STL)或Java(在集合框架中)都有其实现。Deque可以使用模块'collections'在python中实现。

关于C:固定长度数组,转储最旧的、移动并添加最新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53001850/

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