【C++】queue为什么没有迭代器

C++ queue为什么没有迭代器

**C ++迭代器用于对数据结构中的元素进行顺序访问或随机访问。**根据定义不允许顺序或随机访问的数据结构,迭代器没有任何意义。这就是堆栈和队列没有迭代器的原因。
堆栈是LIFO(后进先出)数据结构。
在任何给定时间,您只能访问堆栈的顶部元素(推送到它上面的最后一个项目)。永远不会顺序遍历堆栈的元素,也不会使用随机访问来获取堆栈中的特定元素。您将元素放在一端,然后将元素放在同一端。您只能访问该顶级元素,并且无权访问其下方的任何内容。
可以想象成一堆巨大的书堆在桌子上。要到达最后一本书,您需要从顶部向下移动书籍。要添加图书,您只需将其放在顶部即可。你不能随意访问中间的书。只有您可以看到的书位于顶部。因此,堆栈没有迭代器。

队列是FIFO(先进先出)数据结构。
在任何给定时间,只能在一端(尾部)放置元素,并从另一端(头部)检索元素。根据定义,永远不会顺序遍历队列的元素,也不会使用随机访问来获取队列中的特定元素。你把元素放在一端,然后从另一端拿走元素。无法访问两端之间的任何内容。一个新人排在队列中,预约职员可以提前查看此人。不允许队列中的跳转。因此,队列没有迭代器。

而双端队列是指允许两端都可以进行入队和出队操作的队列,其元素的逻辑结构仍也是线性结构。

实现

C ++中Stack和Queue的大多数实现都基于链表deque(双端队列),可以将项添加到结尾或开头,可以像数组一样使用。
双端队列是内部使用的“容器适配器” 。
双端队列实现栈
双端队列实现queue

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值