【实习笔记】基于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 版权协议,转载请附上原文出处链接和本声明。