为什么deque可以使用迭代器,而queue不能

Jeff_ 2018-12-28 11:29:33
C ++迭代器用于对数据结构中的元素进行顺序访问或随机访问。因此,对于根据定义不允许顺序或随机访问的数据结构,迭代器没有任何意义。这就是堆栈和队列没有迭代器的原因。另一方面,向量和列表允许对元素进行顺序和/或随机访问,因此迭代器对于导航这些数据结构是有意义的。

刚刚接触STL,百度了下迭代器什么是时候使用?看完之后还是半知半解,请教下大家!

1.不允许顺序或随机访问的数据结构是指 堆栈和队列访问元素必须将其元素出栈才能访问吗?
2.双端队列不是在队列基础上改写的吗,不是和队列一样的数据结构吗?为什么双端队列可以使用迭代器?
...全文
1214 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
独孤过 2018-12-28
  • 打赏
  • 举报
回复
queue默认使用deque作为容器,也可以适配list这种支持双向迭代的数据结构。

#include <queue>
#include <list>
#include <iostream>

int main()
{
	std::queue<int, std::list<int>> queue;
	for (int i = 0; i < 10; ++i)
		queue.push(i);
	while (!queue.empty())
	{
		std::cout << queue.front() << ' ';
		queue.pop();
	}
	return 0;
}
独孤过 2018-12-28
  • 打赏
  • 举报
回复
堆栈和队列是线性受限表,必须按照顺序来访问。 至于deque是容器,而queue是容器适配器。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧