c++函数模板二栈实现
1 没有使用模板的栈实现
- #include <iostream>
- #include <string>
- using namespace std;
- class Stack
- {
- public:
- Stack(int size = );
- ~Stack();
- bool isEmpty();
- bool isFull();
- void push(int data);
- int pop();
- private:
- int* space;
- int top;
- };
- Stack::Stack(int size)
- {
- space = new int(size);
- top = ;
- }
- Stack::~Stack()
- {
- delete[]space;
- }
- bool Stack::isEmpty()
- {
- return top == ;
- }
- bool Stack::isFull()
- {
- return top == ;
- }
- void Stack::push(int data)
- {
- space[top++] = data;
- }
- int Stack::pop()
- {
- return space[--top];
- }
- int main()
- {
- Stack s();
- int i = ;
- /*if (!s.isFull())
- {
- s.push(10);
- }*/
- while (!s.isFull()&&i<)
- {
- s.push(i);
- i+=;
- }
- i = ;
- while (!s.isEmpty()&&i<)
- {
- cout << s.pop() << endl;
- i += ;
- }
- cin.get();
- return ;
- }
2 使用模板以后的栈实现
- #include <iostream>
- #include <string>
- using namespace std;
- template<typename T>
- class Stack
- {
- public:
- Stack(int size)
- {
- space = new T[size];
- top = ;
- }
- ~Stack();
- bool isEmpty();
- bool isFull();
- void push(T data);
- T pop();
- private:
- T* space;
- int top;
- };
- template<typename T>
- Stack<T>::~Stack()
- {
- delete[]space;
- }
- template<typename T>
- bool Stack<T>::isEmpty()
- {
- return top == ;
- }
- template<typename T>
- bool Stack<T>::isFull()
- {
- return top == ;
- }
- template<typename T>
- void Stack<T>::push(T data)
- {
- space[top++] = data;
- }
- template<typename T>
- T Stack<T>::pop()
- {
- return space[--top];
- }
- int main()
- {
- Stack<double> s();
- if (!s.isFull())
- s.push(10.4);
- if (!s.isFull())
- s.push(10.5);
- if (!s.isFull())
- s.push(10.6);
- if (!s.isFull())
- s.push(10.7);
- if (!s.isFull())
- s.push(10.8);
- if (!s.isFull())
- s.push(10.9);
- Stack<string> s1();
- if (!s1.isFull())
- s1.push("ni");
- if (!s1.isFull())
- s1.push("hao");
- while (!s1.isEmpty())
- {
- cout << s1.pop() << endl;
- }
- cin.get();
- return ;
- }
可以其他类型可以自己多敲敲哦
c++函数模板二栈实现的更多相关文章
- C++ 函数模板二(函数模板重载)
//函数模板重载 #include<iostream> using namespace std; /* 函数模板会进行严格的类型匹配,模板类型不提供隐式类型转化 普通函数能够进行自动类型转 ...
- C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面
C#中的函数式编程:递归与纯函数(二) 在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential ...
- C++实验二——函数重载、函数模板、简单类的定义和实现
一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...
- 【C++】模板简述(二):函数模板
我们上文讲了,模板的引入,我们发现在某种特殊的情况下,必须得通过模板才能完美的解决问题. 本文就来简述一下函数模板的基本使用. 一.函数模板格式 template<typename Param1 ...
- C++(四十二) — 函数模板多态
1.函数模板(参数多态) 相当于一个函数发生器,参数多态,可以重载. 普通函数和模板函数的本质区别: 普通函数的调用,可以进行隐式的类型转换: 函数模板的调用,使用类型参数化,严格按照类型进行匹配, ...
- C++学习笔记2_函数.函数指针.函数模板
1. 内联函数void printAB(int a,int b){ cout<<(a)<<(b)<<endl;}int main(void){ for(int i= ...
- Lua函数之二
Lua函数之二 Lua中函数的两个重要特性: 1.函数和其他类型(如number.string)一样,可以存放在变量中,也可以存放在table中,可以作为函数的参数,还可以作为函数的返回值. 2.嵌套 ...
- [Reprint] C++函数模板与类模板实例解析
这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下 本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...
- C++学习笔记之模板(1)——从函数重载到函数模板
一.函数重载 因为函数重载比较容易理解,并且非常有助于我们理解函数模板的意义,所以这里我们先来用一个经典的例子展示为什么要使用函数重载,这比读文字定义有效的多. 现在我们编写一个交换两个int变量值得 ...
随机推荐
- 5分钟快速入门Markdown
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式. Markdown的语法简洁明了.学习容易,而且功能比纯文本更强,因此有很多人用它写 ...
- MVC入门——删除页
添加Action DeleteUserInfo using System; using System.Collections.Generic; using System.Linq; using Sys ...
- Java面向对象编程(一)
由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...
- EasyDarwin开源平台直播架构
Created with Raphaël 2.1.0ClientClientEasyCMSEasyCMSEasyCameraEasyCameraEasyDarwinEasyDarwin请求设备列表设备 ...
- 九度OJ 1103:二次方程计算器 (解方程)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2804 解决:633 题目描述: 设计一个二次方程计算器 输入: 每个案例是关于x的一个二次方程表达式,为了简单,每个系数都是整数形式. 输 ...
- gitlab 外网 无法访问 查端口 看文档
云服务器安装成功后 curl 页面可以正常跳转 重置密码的token 页面可以生成 但是 外网无法 访问 [root@test ~]# curl 127.0.0.1:18021 <htm ...
- Srvctl命令具体解释(10g)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lovedieya/article/details/28169481 Srvctl命令 Srvct ...
- 重新认识vue之事件阻止冒泡
冒泡的表现 近期用vue做了一个需求,大概是同一个区域,点击不同位置有不同的响应函数,还有个总的响应函数,好吧,如下图所示: 他们的DOM结构如下: <div v-for="(item ...
- 动态区间第K大
整体二分. 主要需要注意的一点是,对于每个删除操作,若删除操作被算入贡献,则最开始的插入操作也一定会被算入,所以不必担心删除删错. #include<cstdio> #include< ...
- require实现单页应用程序(SPA)
写了一个测试代码,用require.js配合它的一个插件text.js实现了最简单的单页应用程序,简单的记录一下,方便以后复习, git地址:https://github.com/lily1010/r ...