base class for deque
This commit is contained in:
parent
7e3ca4c45f
commit
8325b7e2be
|
@ -0,0 +1,50 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "SH_API.h"
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
|
namespace SHADE
|
||||||
|
{
|
||||||
|
template<typename T>
|
||||||
|
class SH_API SHDeque
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
SHDeque(int n) : max_size(n) {}
|
||||||
|
|
||||||
|
std::deque<T> GetDeque() const
|
||||||
|
{
|
||||||
|
return deque;
|
||||||
|
}
|
||||||
|
|
||||||
|
void InsertFront(T const& obj)
|
||||||
|
{
|
||||||
|
if (deque.size() < max_size)
|
||||||
|
deque.push_front(std::move(obj));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
deque.pop_back();
|
||||||
|
deque.push_front(std::move(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsEmpty()
|
||||||
|
{
|
||||||
|
return deque.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Pop()
|
||||||
|
{
|
||||||
|
deque.pop_front();
|
||||||
|
}
|
||||||
|
|
||||||
|
T const& Top()
|
||||||
|
{
|
||||||
|
return deque.front();
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int max_size;
|
||||||
|
std::deque<T> deque;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue