类模板定义+用类模板写一个入栈出栈的程序

10人阅读 评论(0) 收藏 举报
分类:

类模板和函数模板定义类似,都可以看成由模板头和模板体两部分组成。类模板体是一个完整的类。

template<typename 形参名1, template 形参名2,……>

class 类名

{

    // …

};

 

例子:用模板类写一个入栈出栈的程序

#include<iostream>

 

using namespace std;

 

template <typename T, unsignedint N>

class Stack

{

private:

unsignedint index;

T a[N];

public:

Stack():index(){ }

boolpush(const T &value);

T&pop();

boolfull(){ return index == N; }

boolempty(){ return (index == 0); }

unsignedint size(){ return index; }

unsignedint capacity(){ return N; }

};

 

template <typename T, unsigned int N>

bool Stack <  T, N > ::push(const T &value) //特别注意, 在外部编写成员函数时,类名后面指明类型时候只需要类型名,不需要typename关键字!

{

 

if((index <= N - 1) && (index >= 0))

{

a[index++]= value;

returntrue;

}

else

{

returnfalse;

}

 

}

 

template <typename T, unsigned int N>

T& Stack < T, N > ::pop()

{

returna[--index];

}

 

int main()

{

Stack<int, 6> a;//在定义对象的时候也要<>用于指定参数名的数据类型

inti = 10;

 

cout<< "Push Stack......" << endl;

while(!a.full())

{

cout<< "Push " << i << " to Stack" <<endl;

a.push(i++);

}

cout<< endl;

cout<< "Stack data depths: " << a.size() << endl;

cout<< "Stack capacity depths " << a.capacity() <<endl;

cout<< "Pop Stack......" << endl;

while(!a.empty())

{

cout<< "Pop " << a.pop() << "from Stack"<< endl;

}

cout<< endl;

cout<< "Stack data depths: " << a.size() << endl;

cout<< "Stack capacity depths " << a.capacity() <<endl;

 

system("pause");

return0;

}

查看评论

JFinal专题之模板引擎精讲精练

-
  • 1970年01月01日 08:00

栈类模板的使用

所谓类模板,实际上是建立一个通用类,其数据成员,成员函数的返回类型和形参类型不具体指定,用一个虚拟的类型来代表。类模板代表了一类类,模板类表示某一具体的类。...
  • weichanjuan3
  • weichanjuan3
  • 2015-06-29 10:25:21
  • 1502

c++堆栈类模板实现

最近在复习数据结构,涉及到堆栈的实现,通过类模板可以使堆栈的存储数据类型更为灵活,下面是堆栈的实现代码:...
  • theVicTory
  • theVicTory
  • 2017-04-18 12:38:24
  • 2098

矩阵类模板

        这是我在做游戏三维图形处理中编制的一个矩阵类模板,可以产生整型,浮点,和自定义类型的任意阶矩阵和行列式,并且定义了一些常用的三维向量运算函数模板,希望大家给出修改意见。建议大家只看函数...
  • swnuwangyun
  • swnuwangyun
  • 2002-11-05 11:57:00
  • 1676

栈的类模板及其应用

1.栈的类模板: #ifndef STACK_H #define STACK_H #include template class Stack { private: T list[SIZE];...
  • u013232740
  • u013232740
  • 2015-06-16 15:33:11
  • 604

编写一个使用数组类模板Array对数组进行排序、求最大值和求元素和的程序,并采用相关数据进行测试。

#include"iostream" #include"algorithm" #include"string.h" using namespace std; template class Array ...
  • u012651730
  • u012651730
  • 2013-12-07 13:25:38
  • 1220

类模板的定义和使用方法

下面举例说明类模板的定义和使用方法。   例9.3.1:类模板的定义和使用。  #include  #include  const int SIZE=8;  template  cl...
  • hdtrs2010
  • hdtrs2010
  • 2015-09-16 16:08:34
  • 599

类模板、函数模板以及类成员函数在类外定义情况

1函数模板的写法 函数模板的一般形式如下: Template 返回类型 函数名(形参表) {//函数定义体 } 说明: template是一个声明模板的关键字,表示声明一个...
  • wonengguwozai
  • wonengguwozai
  • 2016-08-03 21:09:49
  • 3895

【C++】模板类顺序表

1.什么是模板     模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。如果我们写一个普通的顺序表,那它只能满足一种数据存储类型,之后如果想把这个顺序表改成其他数据类...
  • pointer_y
  • pointer_y
  • 2016-08-29 09:01:23
  • 978

8.18在类模板外定义成员函数,实现3个数求和

#include using namespace std; template //模板声明,其中T为类型参数 class sum{ ...
  • zhang_sx
  • zhang_sx
  • 2015-06-02 21:06:34
  • 880
    个人资料
    持之以恒
    等级:
    访问量: 2779
    积分: 596
    排名: 8万+
    文章存档