是否存在固定大小的现有数据结构,如果插入了新元素,该结构将推出最旧/最后一个元素?


20

我正在寻找一个数据结构,如果插入了新元素,它将推出其最早/最后的元素。例如,让我们D代表结构。D包含3个类型Number D的默认值的元素将被初始化为1, 23

d=[1个23]

如果Number将包含值5的插入D3则会将推出,而12会向右移。

d=[51个2]

首先想到的是一个数组,但是定义不包括推送行为。


那么没有内置的数据结构,但是使用双链表链表是很容易实现的吗?
找不到用户

1
使用从队列继承的包装器怎么样?然后添加方法void push_replace(T val) { pop(); push(val); }
Francesco Dondi

@FrancescoDondi可能应该是T push_replace(T val) { T old = pop(); push(val); return old; }
valbaca

1
现在肯定存在:您只是非正式地定义了它;也许您应该问一下它是否众所周知,是否具有公认的接口,以及实现是否可用(不是最后一个问题)。
PJTraill

@valbaca我在考虑C ++,pop()在异常复制出复杂对象的情况下,由于堆栈展开问题而不会返回任何内容,因此front()如果需要,在丢弃之前应该使用它。但是可以肯定的是,如果您不关心异常,那么您的方法会更好。
Francesco Dondi

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.