双标具有下标运算符的原因是什么?

What is the reasoning for a deque to have a subscript operator?

本文关键字:是什么 运算符 下标      更新时间:2023-10-16

我今天和一个朋友聊天,他提出了当其他"类似"的 DS(如队列和堆栈(不能访问下标运算符时,下标运算符可以访问 deque 元素是多么奇怪。毕竟,deque不就是双端队列吗?可以随机访问 deque 的事实不会破坏 deque 数据结构的完整性吗?

另外,从性能的角度来看,除非你实际使用deque方法(前后函数系列(,否则deque不会完全使用下标运算符带来更少的内容吗?我知道 deque 背后的实现将其拆分为块/块,并且通常需要两个操作才能实际随机访问一个元素,而向量保证在连续内存中。

谢谢!

deque可以被随机访问的事实不会破坏deque数据结构的完整性吗?

不。你只是挂在它的名字上。我们确实对"队列"有一个明确的定义,所以这可能是一个糟糕的单词选择,但数据结构不是由其名称定义的。

日期结构是具有一组特定关联操作的数据 (duh(。使用下标运算符定义deque的标准库。这就是数据结构。我们非常小心地确保操作的各种要求不会冲突,因此deque作为数据结构的完整性得到了很好的维护。

此外,从性能的角度来看,除非您实际使用 deque 方法(前端和后端函数系列(,否则 deque 不会完全使用下标运算符带来更少的内容吗?我知道 deque 背后的实现将其拆分为块/块,并且通常需要两个操作才能实际随机访问一个元素,而向量保证在连续内存中。

与Vector相比,Deque还有另一个优势。 如果连续内存很大,超过操作系统可以分配的内存,则可能会耗尽矢量的内存。由于 deques 是分页内存,因此良好的实现可能会降低对操作系统的要求,因为内存要求是不连续的。