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

施工企业资料搜索优化的培训免费咨询

施工企业资料,搜索优化的培训免费咨询,为何网站需改版,免费搭建手机网站源码stack 栈适配器是一种单端开口的容器#xff08;如图 1 所示#xff09;#xff0c;实际上该容器模拟的就是栈存储结构#xff0c;即无论是向里存数据还是从中取数据#xff0c;都只能从这一个开口实现操作。 图 1 stack 适配器示意图 如图 1 所示#xff0c;stack 适配器…stack 栈适配器是一种单端开口的容器如图 1 所示实际上该容器模拟的就是栈存储结构即无论是向里存数据还是从中取数据都只能从这一个开口实现操作。 图 1 stack 适配器示意图 如图 1 所示stack 适配器的开头端通常称为栈顶。由于数据的存和取只能从栈顶处进行操作因此对于存取数据stack 适配器有这样的特性即每次只能访问适配器中位于最顶端的元素也只有移除 stack 顶部的元素之后才能访问位于栈中的元素。 栈中存储的元素满足“后进先出简称LIFO”的准则stack 适配器也同样遵循这一准则。 stack容器适配器的创建 由于 stack 适配器以模板类 stackT,ContainerdequeT其中 T 为存储元素的类型Container 表示底层容器的类型的形式位于stack头文件中并定义在 std 命名空间里。因此在创建该容器之前程序中应包含以下 2 行代码 #include stackusing namespace std; 创建 stack 适配器大致分为如下几种方式。 1) 创建一个不包含任何元素的 stack 适配器并采用默认的 deque 基础容器 std::stackint values; 上面这行代码就成功创建了一个可存储 int 类型元素底层采用 deque 基础容器的 stack 适配器。 2) 上面提到stackT,ContainerdequeT 模板类提供了 2 个参数通过指定第二个模板类型参数我们可以使用出 deque 容器外的其它序列式容器只要该容器支持 empty()、size()、back()、push_back()、pop_back() 这 5 个成员函数即可。 在介绍适配器时提到序列式容器中同时包含这 5 个成员函数的有 vector、deque 和 list 这 3 个容器。因此stack 适配器的基础容器可以是它们 3 个中任何一个。例如下面展示了如何定义一个使用 list 基础容器的 stack 适配器 std::stackstd::string, std::listint values; 3) 可以用一个基础容器来初始化 stack 适配器只要该容器的类型和 stack 底层使用的基础容器类型相同即可。例如 std::listint values {1, 2, 3};std::stackint,std::listint my_stack (values); 注意初始化后的 my_stack 适配器中栈顶元素为 3而不是 1。另外在第 2 行代码中stack 第 2 个模板参数必须显式指定为 listint必须为 int 类型和存储类型保持一致否则 stack 底层将默认使用 deque 容器也就无法用 lsit 容器的内容来初始化 stack 适配器。 4) 还可以用一个 stack 适配器来初始化另一个 stack 适配器只要它们存储的元素类型以及底层采用的基础容器类型相同即可。例如 std::listint values{ 1, 2, 3 };std::stackint, std::listint my_stack1(values);std::stackint, std::listint my_stackmy_stack1;//std::stackint, std::listint my_stack(my_stack1); 可以看到和使用基础容器不同使用 stack 适配器给另一个 stack 进行初始化时有 2 种方式使用哪一种都可以。 注意第 3、4 种初始化方法中my_stack 适配器的数据是经过拷贝得来的也就是说操作 my_stack 适配器并不会对 values 容器以及 my_stack1 适配器有任何影响反过来也是如此。 stack容器适配器支持的成员函数 和其他序列容器相比stack 是一类存储机制简单、提供成员函数较少的容器。表 1 列出了 stack 容器支持的全部成员函数。 表 1 stack容器适配器支持的成员函数 成员函数功能empty()当 stack 栈中没有元素时该成员函数返回 true反之返回 false。size()返回 stack 栈中存储元素的个数。top()返回一个栈顶元素的引用类型为 T。如果栈为空程序会报错。push(const T val)先复制 val再将 val 副本压入栈顶。这是通过调用底层容器的 push_back() 函数完成的。push(T obj)以移动元素的方式将其压入栈顶。这是通过调用底层容器的有右值引用参数的 push_back() 函数完成的。pop()弹出栈顶元素。emplace(arg...)arg... 可以是一个参数也可以是多个参数但它们都只用于构造一个对象并在栈顶直接生成该对象作为新的栈顶元素。swap(stackT other_stack)将两个 stack 适配器中的元素进行互换需要注意的是进行互换的 2 个 stack 适配器中存储的元素类型以及底层采用的基础容器类型都必须相同。 下面这个例子中演示了表 1 中部分成员函数的用法 ​ #includeiostream #includestack #includelist using namespace std; int main(){listintvalues{1,2,3};stackint,listintmy_stack(values);//查看 my_stack 存储元素的个数cout size of my_stack: my_stack.size() endl;//将 my_stack 中存储的元素依次弹栈直到其为空while (!my_stack.empty()){cout my_stack.top() endl;//将栈顶元素弹栈my_stack.pop();}return 0; }​ 运行结果为 size of my_stack: 3 3 2 1
http://www.w-s-a.com/news/559056/

相关文章:

  • 网站引导页一般是什么格式网页设计师的应聘岗位
  • 构建网站空间网站开发与维护招聘
  • 网站建设的网页怎么做番禺网站开发哪家强
  • 网站开发是程序员吗百度网盘下载电脑版官方下载
  • 中国电力建设集团网站杭州网站运营
  • 大气网站模板下载效果好的网站建设公
  • 住房和城乡建设部网站打不开重庆市建设工程信息网官网30系统
  • 做美食软件视频网站大数据精准营销策略
  • 网站后台密码错误陕西大型网站建设
  • 网站建站中关键字搜索怎么弄wordpress 后台插件无法访问
  • 做减肥餐的网站网站优化注意事项
  • 做网站做推广有效果吗专门做淘宝优惠券的网站
  • 菜谱网站开发系统ps做网页效果图
  • 徐州品牌网站建设wordpress多重筛选页面
  • 网站改版提示无需改版个人怎么申请微信小程序
  • 电子商务网站建设的简要任务执行书可以注册免费网站
  • 公司网站设计需要什么豪爵铃木摩托车官网
  • 建收费网站合肥地区网站制作
  • 自己做头像网站小网站建设公司
  • 电子商务建设与网站规划wordpress linux安装
  • wordpress新手建站win8网站模版
  • 网站的简单布局孝感 商务 网站建设
  • 湖北手机版建站系统价格优化网站内容
  • 网站后台登录不显示验证码软文发布网站
  • 企业微网站建设方案收费的网站如何免费
  • 平昌县建设局网站中国500强企业有哪些
  • 网站开发制作的流程是什么网页打不开显示不安全怎么办
  • 网络网站开发设计安徽建设工程信息网怎么打不开了
  • 百度网站推广申请深圳公众号制作
  • 百度站长怎么做网站维护中国深圳航空公司官网