C++ deque有下标运算符的原因是什么?
我今天和一位朋友聊天,他提到了deque元素能够被下标操作符访问,而其他“类似”DSs(如队列和堆栈)却不能访问,这有多奇怪。毕竟,deque不就是指双向排队吗?deque可以随机访问的事实是否破坏了deque数据结构的完整性 另外,从性能的角度来看,deque不是完全使用下标操作符来减少表中的内容吗,除非您实际使用了deque方法(前向函数和后向函数族)?我知道deque背后的实现将其拆分为块/块,通常需要两个操作才能真正随机访问元素,而向量保证在连续内存中 谢谢 deque可以随机访问的事实是否破坏了deque数据结构的完整性 不,你只是挂断了它的名字。我们心里确实有一个“队列”的清晰定义,所以这可能是一个糟糕的词语选择,但数据结构不是由其名称定义的 日期结构是具有一组特定关联操作的数据(duh)。用下标运算符定义的标准库C++ deque有下标运算符的原因是什么?,c++,vector,stl,deque,C++,Vector,Stl,Deque,我今天和一位朋友聊天,他提到了deque元素能够被下标操作符访问,而其他“类似”DSs(如队列和堆栈)却不能访问,这有多奇怪。毕竟,deque不就是指双向排队吗?deque可以随机访问的事实是否破坏了deque数据结构的完整性 另外,从性能的角度来看,deque不是完全使用下标操作符来减少表中的内容吗,除非您实际使用了deque方法(前向函数和后向函数族)?我知道deque背后的实现将其拆分为块/块,通常需要两个操作才能真正随机访问元素,而向量保证在连续内存中 谢谢 deque可以随机访问的事实
deque
。这就是数据结构。我们非常小心地确保操作上的各种需求不会冲突,因此,deque
作为数据结构的完整性得到了很好的维护
另外,从性能的角度来看,deque不是完全使用下标操作符来减少表中的内容吗,除非您实际使用了deque方法(前向函数和后向函数族)?我知道deque背后的实现将其拆分为块/块,通常需要两个操作才能真正随机访问元素,而向量保证在连续内存中
deque与vector相比还有另一个优势。如果连续内存很大,操作系统可能无法分配,那么向量的内存可能会耗尽。因为deque是分页内存,一个好的实现可能会降低对操作系统的要求,因为内存要求是不连续的。换句话说,这里的
deque
只是一个前面有快速插入/删除的向量的名称。@bipll:除了它与向量不太相似之外。首先也是最重要的是,deque
不像vector
那样分配连续的内存块。bipll:deque不能作为向量实现。当达到容量时,vector的底层内存将不时重新分配。然而,在C++标准中,如果元素仅通过PuthJoePrd/PuthFig插入,那么对DeQu中的元素的引用对于所有时间都是有效的。唯一可以满足这一要求的方法是,如果deque是指向元素页面的指针数组。数组可以重新分配,新页面可以添加到前面和后面,而不会干扰现有页面。您也可以使用向量作为队列。它的表现就像垃圾=P