要实现先进先出队列,元素不重复不排序,STL里面哪个容器比较适合?

xinyi 2014-07-17 02:22:49
我一开始使用queue,但是发现queue无法进行查找,那么就无法检查进队项是否已经存在、不再需要插入。
...全文
578 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-07-17
  • 打赏
  • 举报
回复
6楼也行,不需要额外的存储空间,但可能find的效率稍低。元素不超过10000个可用。
passion_wu128 2014-07-17
  • 打赏
  • 举报
回复

#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;

template<class T>
class MyQueue : public queue<T>
{
public:
	void push(const value_type& x)
	{
		if(find(c.begin(), c.end(), x) == c.end())
		{
			//没找到此元素则添加
			__super::push(x);	
		}
	}
};

void main()
{
	MyQueue<int> mq;
	mq.push(1);
	mq.push(1);
	mq.push(1);
	mq.push(2);

	while(!mq.empty())
	{
		cout << mq.front() << "";
		mq.pop();
	}
}
passion_wu128 2014-07-17
  • 打赏
  • 举报
回复
#include <iostream> #include <queue> #include <algorithm> using namespace std; template<class T> class MyQueue : public queue<T> { public: void push(const value_type& x) { if(find(c.begin(), c.end(), x) == c.end()) { //没找到此元素则添加 __super::push(x); } } }; void main() { MyQueue<int> mq; mq.push(1); mq.push(1); mq.push(1); mq.push(2); while(!mq.empty()) { cout << mq.front() << ""; mq.pop(); } }
赵4老师 2014-07-17
  • 打赏
  • 举报
回复
每往queue中放进一个元素的时候,同时往map或set中也放一个, 放除第一个元素以外的其它元素时,先在map或set中查找,找到则跳过,找不到再放。 每从queue中取出一个元素的时候,同时从map或set中也取出对应的那个元素,
xinyi 2014-07-17
  • 打赏
  • 举报
回复
能详细点吗?初学者
赵4老师 2014-07-17
  • 打赏
  • 举报
回复
queue+set
赵4老师 2014-07-17
  • 打赏
  • 举报
回复
queue+map

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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