【实习笔记】基于STL容器实现FIFO队列

题目

1.基于STL容器实现FIFO队列。
2.要求实现Push,Pop入队,出队方法
3.要求提供Empty方法判断队列是否为空。
4.要求提供Size方法,获取当前队列长度。
5.队列中元素的类型可以是任意类型,但一个队列的实例只能持有一种类型的元素。
6.提供一个Search方法,实现队列内对象的查找。(入参要求是对象)
7.程序能够正常运行,结果正确

思路

利用vector容器实现queue,调用vector的方法即可,但是vector没有pop_front()方法,可以用erase(.begin())代替。
在实现search()方法时,我使用的时使用find()方法查找对象,使用distance()计算索引值,在对具体对象测试时需要对“==”运算符重载。

代码

#include <iostream>
#include <vector>
#include <string>

using namespace std;

template<typename T, class Container = vector<T>>
class Queue {
public:
	void Push(const T& x) {
		queue.push_back(x);
	}

	void Pop() {
		queue.erase(queue.begin());   
	}

	size_t Size() {
		return queue.size();
	}

	bool Empty() {
		return queue.empty();
	}

	const T& Front() {
		return queue.front();
	}

	const T& Back() {
		return queue.back();
	}

	void search(const T& n) {
		typename vector<T>::iterator it = find(queue.begin(), queue.end(), n);   //find对象时需要重载==
		if (it != queue.end())
			cout << "目标索引为" << distance(queue.begin(), it);
		else
			cout << "couldn't find it!";
	}
private:
	Container queue;
};

版权声明:本文为qq_45850142原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>