c++ - 双端队列有下标运算符的原因是什么?

标签 c++ vector stl deque

我今天和一位 friend 聊天,他提到双端队列元素能够通过下标运算符访问,而其他“类似”DS(例如队列和堆栈)则不能访问,这是多么奇怪。毕竟,deque 不就是双端队列吗?双端队列可以随机访问的事实是否会破坏双端队列数据结构的完整性?

另外,从性能的角度来看,除非您实际上使用了 deque 方法(前端和后端函数系列),否则 deque 是否会完全使用下标运算符将 less 带到表中?我了解双端队列背后的实现将其分成 block / block ,并且通常需要两个操作才能实际随机访问元素,而 vector 保证位于连续内存中。

谢谢!

最佳答案

Doesn't the fact that deque's can be randomly accessed ruin the very integrity of the deque data structure?

没有。你只是对它的名字感兴趣。我们心里确实对“队列”有一个明确的定义,所以这也许是一个糟糕的用词,但数据结构并不是由它的名字来定义的。

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

关于c++ - 双端队列有下标运算符的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51053652/

相关文章:

c++ - 如何添加带有指向函数的指针的构造函数作为参数

c++ - 将 vector<double> 写入二进制文件并再次读取

c++ - Visual Studio 下的 string::swap 复杂度

c++ - 在指针的标准 vector 上调用调整大小崩溃

c++ - 指针的 STL vector 上的等于运算符

c++ - 递归地将模板模板传递给模板模板函数

c++ - 模板化类声明 C++

android - 以编程方式更改android中向量的fillColor

c++ - 'override' 限定符与尾随返回类型一起去哪里?

c++ - c++中 vector 和列表的setter和getter