我对在软件应用程序中的堆栈,队列和树的使用位置相当熟悉,但是我之前从未使用过Deque(双端队列)。我通常会在野外遇到什么地方?它会和Queue放在同一个地方,但又有更多的功能吗?
2
en.wikipedia.org/wiki/Double-ended_queue#Applications
—
Arseni Mourzenko'5
似乎这个线程有些混乱。在互联网上,“双端队列”是一个双端队列(维基百科提到了链表的实现)。但是,在C ++ STL中,“ std :: deque”是一种类似数组的结构,实现为数据块数组。它提供类似于std :: vector的随机访问,但是它的调整大小功能接近于std :: list的调整大小功能,因为添加数据时,它会添加块,并且不会重新分配和移动现有数据。
—
DXM 2012年
@DXM:尽管STL双端队列仍然是双端队列,并且在末端提供更快的操作(取决于实现)。它也提供了对中间对象的访问权限,这并不会使它的主要操作变得像队列一样。
—
gbjbaanb 2012年
@gbjbaanb:我要说的是,如果您查看3类的公共接口:std :: vector,std :: list(或std :: queue)和std :: deque,您将看到std :: vector和std :: deque具有相同的公共接口和相同的功能(std :: deque稍微更灵活,但会占用更大的内存空间)。另一方面,std :: list和std :: queue的行为更像是CS的对应部分,链表和队列。CS deque!= std :: deque
—
DXM 2012年
我觉得这个答案由shiv.mymail更实用- stackoverflow.com/questions/3880254/...
—
roottraveller