当前位置: 首页 > news >正文

怎么做捐款网站中国十大网站建设公司

怎么做捐款网站,中国十大网站建设公司,synology做网站服务器,wordpress做社交网站1. 标准库中的stack stack 的介绍: 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作 2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其…

1. 标准库中的stack

stack 的介绍:

1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作

2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出

3. stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类

a. stack 的使用

注意:

如果要访问所有元素得到栈顶元素,再pop,直到为空

2. stack的模拟实现

代码

namespace lhy
{ template<class T,class container = vector<T>>class stack{public:void push(const T& x){_t.push_back(x);}void pop(){_t.pop_back();}size_t size(){return _t.size();}bool empty(){return _t.empty();}const T& top(){return _t.back();}private:container _t;};

//用法很像缺省参数,不过这里缺省的是类型

3. 标准库中的queue

queue 的介绍:

1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素

2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列

3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类

a. queue 的使用

4. queue的模拟实现

代码

namespace lhy
{ template<class T,class container = list<T>>class queue{public:void push(const T& x){_v.push_back(x);}void pop(){_v.pop_front();}bool empty(){return _v.size() == 0;}const T& back(){return _v.back();}const T& front(){return _v.front();}size_t size(){return _v.size();}private:container _v;};

5. priority_queue (优先级队列)

优先级队列的介绍:

优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中元素构造成堆的结构

因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue

注意:

默认情况下priority_queue是大堆

a. priority_queue 的使用

  • priority_queue() (无参构造函数)
  • priority_queue(InputIterator first, InputIterator last)
  • empty() (判空)
  • push() (尾插)
  • pop () (删除栈顶元素,即第一个元素)
  • top() (返回栈顶元素)

6. priority_queue 的模拟实现

代码

namespace lhy
{template<class T>struct less{bool operator()(const T& x, const T& y){return x > y;}};template<class T>struct greater{bool operator()(const T& x, const T& y){return x < y;}};template<class T, class container = vector<T>, class compare = less<T>>class priority_queue{private:container con;void AdjustUp(int child){int parent = (child - 1) / 2;while (child > 0){if (compare()(con[parent], con[child])){std::swap(con[parent], con[child]);}else{break;}child = parent;parent = (child - 1) / 2;}}void AdjustDown(int parent){int child = parent * 2 + 1;while (child < size()){if (child + 1 < size() && con[child] > con[child + 1]){child++;}if (compare()(con[parent], con[child])){std::swap(con[parent], con[child]);}else{break;}parent = child;child = parent * 2 + 1;}}public:size_t size(){return con.size();}void push(const T & x){con.push_back(x);AdjustUp(size() - 1);}void pop(){swap(con[0], con[size() - 1]);con.pop_back();AdjustDown(0);}bool empty(){return con.empty();}const T& top(){return con[0];}};
}

代码注意事项

这两个类实际上又可以说成伪函数,这里通过比较大小判断建大堆还是小堆

用法如下:

compare()是匿名对象,后面接着是调用 less 类 或者 greater 类的运算符重载()

http://www.yayakq.cn/news/226426/

相关文章:

  • 如何建设网站zy258网站seo 文章转载 修改标题
  • 湖北省利川市建设局网站快递建站收费标准
  • 上海网络建站模板外贸新手怎么找客户
  • 凡科做的网站怎么打不开了网站建设相关新闻
  • 南宁网站建设推广优化wordpress 分类目录 seo
  • php完整网站开发源码网站首页百度收录怎么做
  • 做服装商城网站论文桂林漓江景区介绍
  • 怎样在百度搜到自己的网站百度大全网站
  • 2021电商行业发展现状及趋势seo外链建设
  • 东莞整站优化推广公司找火速163网易企业邮箱入口
  • 大学生做网站兼职创意设计网站大全
  • 网站帮忙备案易语言做网站登录器
  • 网站悬浮框代码设计公司做网站价格
  • 西安网站建设系统开发阜阳网站开发公司
  • 龙口网站建设公司中小工厂erp管理系统
  • 微网站做下载链接海报设计素材网站免费
  • 网站对联模板o2o商城网站搭建
  • 企业网站备案名称要求望野王绩朗诵
  • 网站logoPS怎么做做网站运营有前途吗
  • seo外链网站网站关键词更改
  • 我做网站了 圆通动易网站无法安装
  • 网站分析 工具seo优化心得
  • 大型网站开发语言框架工具wordpress 语言选择
  • 网站建设需要的人员高清图片
  • 网站建设 诺德中心教育房地产 网站建设
  • 网站建站的基本步骤织梦dedeeims网站打不开
  • 安徽质量工程建设网站网络营销与策划实训
  • 跨境网站开发手机网站来几个
  • 承德网站制作方案电商网站统计怎么做
  • 宝坻建设路小学网站四川网站建设报价