我正在寻找一个数据结构,如果插入了新元素,它将推出其最早/最后的元素。例如,让我们D
代表结构。D
包含3个类型Number
D
的默认值的元素将被初始化为1, 2
和3
。
如果Number
将包含值5
的插入D
,3
则会将推出,而1
和2
会向右移。
首先想到的是一个数组,但是定义不包括推送行为。
那么没有内置的数据结构,但是使用双链表链表是很容易实现的吗?
—
找不到用户
使用从队列继承的包装器怎么样?然后添加方法
—
Francesco Dondi
void push_replace(T val) { pop(); push(val); }
。
@FrancescoDondi可能应该是
—
valbaca
T push_replace(T val) { T old = pop(); push(val); return old; }
现在肯定存在:您只是非正式地定义了它;也许您应该问一下它是否众所周知,是否具有公认的接口,以及实现是否可用(不是最后一个问题)。
—
PJTraill
@valbaca我在考虑C ++,
—
Francesco Dondi
pop()
在异常复制出复杂对象的情况下,由于堆栈展开问题而不会返回任何内容,因此front()
如果需要,在丢弃之前应该使用它。但是可以肯定的是,如果您不关心异常,那么您的方法会更好。