如何建立一个网站分享教程软件开发项目验收报告
1.首先介绍一个新的容器deque:
在C++中,`deque`(双端队列)是标准模板库里功能独特的容器。它优点显著,能在两端以$O(1)$时间复杂度高效插入和删除元素,也支持像数组那样以$O(1)$时间复杂度随机访问,还自带动态内存管理,使用方便。不过其缺点也不容忽视,因采用多数组块结构,内存开销比连续存储的`vector`大,在容器中间位置插入和删除元素时效率低,时间复杂度为$O(n)$,迭代器稳定性也较差。在使用场景上,`deque`适合构建双端队列数据结构,像任务调度器场景;也适用于既需随机访问又要频繁在两端操作的情况,如滑动窗口算法;但不适合频繁在容器中间插入和删除元素的场景,遇到此类场景更推荐`list`容器 。
接下来是用deque来当作缺省参数!!!!!
模拟栈:
namespace hush1
{//容器适配器的方法----container不用考虑是什么底层容器,都可以适配出栈的先进后出template<class T,class container=deque<T>>class stack{typedef T* iterator;public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_back();}const T& top(){return _con.back();}bool empty(){return _con.empty();}bool size(){return _con.size();}private:/*size_t* _arry;size_t size;*/container _con;};
}
模拟队列:
namespace hush2
{template<class T,class container=deque<T>>class queue{public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_front();}bool empty(){return _con.empty();}const T& top(){return _con.front();}const T& back(){return _con.back();}private:container _con;};
}
main检验:
#include"SQ.h"void test_stack()
{hush1::stack<int, vector<int>> v;v.push(1);v.push(2);v.push(3);v.pop();int ret = v.top();cout << ret << endl;/*for (size_t i = 0; i < v.size(); ++i){cout << v[i] << end;}*/
}void test_queue()
{hush2::queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);while (!q.empty()){cout << q.top() << endl;q.pop();}cout << endl;}int main()
{/*test_stack();*/test_queue();return 0;
}