文章目录
C++ – queue 和 stack模拟实现
1. queue模拟实现
队列是先进先出的特性,这里要支持vector、list、deque等等,这里queue和stack模拟实现,都是直接复用
1.0 成员变量
template <class T, class Container = list<T>>
Container _container;
1.1 push()
void push(const T& val)
{
_container.push_back(val);
}
1.2 pop()
void pop()
{
_container.pop_front();
}
1.3 front()
const T& front()
{
return _container.front();
}
1.4 back()
const T& back()
{
return _container.back();
}
1.5 size()
size_t size()
{
return _container.size();
}
1.6 empty()
bool empty()
{
return _container.empty();
}
- 解释class Container作用
就拿push()来说,_contatiner.push_back(val);假设 _Container是list类型,那么 _container就是list类型,这时 _container直接调用库接口push_back();
1.7 完整代码
namespace my_queue
{
template <class T, class Container = list<T>>
class queue
{
public:
void push(const T& val)
{
_container.push_back(val);
}
void pop()
{
_container.pop_front();
}
const T& front()
{
return _container.front();
}
const T& back()
{
return _container.back();
}
size_t size()
{
return _container.size();
}
bool empty()
{
return _container.empty();
}
private:
Container _container;
};
}
2. stack模拟实现
2.0 成员变量
template <class T, class Container = vector<T>>
Container _container;
2.1 push()
void push(const T& val)
{
_container.push_back(val);
}
2.2 pop()
void pop()
{
_container.pop_back();
}
2.3 top()
const T& top()
{
return _container.back();
}
2.4 back()
const T& back()
{
return _container.back();
}
2.5 size()
size_t size()
{
return _container.size();
}
2.6 empty()
bool empty()
{
return _container.empty();
}
2.7 完整代码
namespace my_stack
{
template <class T, class Container = vector<T>>
class stack
{
public:
void push(const T& val)
{
_container.push_back(val);
}
void pop()
{
_container.pop_back();
}
const T& top()
{
return _container.back();
}
const T& back()
{
return _container.back();
}
size_t size()
{
return _container.size();
}
bool empty()
{
return _container.empty();
}
private:
Container _container;
};
}