类模板的用法

1.格式:template<模板参数表>  (参数可以直接定义默认值)

    class 类名

    { ...};

其成员函数可以在类外定义。

eg:

 1 template <class TNO,class TScore=int,int num=10>
 2 class S
 3 {
 4 private:
 5     TNO Sid[num];
 6 public:
 7     int bel(TScore ascore);
 8     void sort();
 9 };
10 template <class TNO,class TScore,int num>
11 int S <TNO,TScore,num>::bel(TScore ascore)
12 {
13     return 0;
14 }
15 template <class TNO,class TScore,int num>
16 void S <TNO,TScore,num>::sort()
17 {
18     return Sid[0];
19 }

2.栈类模板的实现:

 1 #include <iostream>
 2 using namespace std;
 3
 4 template <class T>
 5 class Stack
 6 {
 7 private:
 8     int size;
 9     int top;
10     T* space;
11 public:
12     Stack(int=10);
13     ~Stack()
14     {
15         delete []space;
16     }
17     bool push(const T&);
18     T pop();
19     bool IsEmpty() const
20     {
21         return top==size;
22     }
23     bool IsFull() const
24     {
25         return top==0;
26     }
27 };
28 template <class T>
29 Stack <T>::Stack(int size)
30 {
31     this->size=size;
32     space=new T[size];
33     top=size;
34 }
35 template <class T>
36 bool Stack<T>::push(const T& element)
37 {
38     if(!IsFull())
39     {
40         space[--top]=element;
41         return true;
42     }
43     return false;
44 }
45 template <class T>
46 T Stack<T>::pop()
47 {
48     return space[top++];
49 }
50 int main()
51 {
52     Stack<char> S1(4);
53     S1.push(‘x‘);
54     S1.push(‘y‘);
55     S1.push(‘z‘);
56     S1.push(‘u‘);
57     S1.push(‘v‘);
58     while(!S1.IsEmpty())
59         cout<<S1.pop()<<endl;
60     return 0;
61 }

时间: 2024-08-05 11:10:03

类模板的用法的相关文章

[2016-04-23][C++类模板的一些事儿]

定义(关于类模板和模板类) 类模板:在类里面使用了 模板类型,即满足如下结构就是类模板 template <typename T> class Array{ T* p; } ; 模板类:类模板实例化之后的对象就叫模板类 使用 实例化必须指定类型, 通过 类名后面加上 <类型> 来指明类型 Array<int> a; 注意 没有指定类型是不能实例化的, 没有实例化的变量是不能使用的!!! template <typename T> T a; cin>&g

18.2.2 简单的类模板

下面用前面的一个例子来说明,为数组定义一个类模板,该数组要对索引值进行边界检查,确保索引值是合法的.尽管标准库提供了数组模板的完整实现方式,但建立自己的数组模板有助于理解模板的工作原理.我们已经很清楚数组的工作原理了,因此下面集中讨论模板的特性.这也更容易使用第20章介绍的标准库中的 Array 模板. 数组模板只有一个类型参数,所以该模板的定义如下: template <typename T> class Array{ //definition of the template.. } Arr

C++STL - 类模板

类的成员变量,成员函数,成员类型,以及基类中如果包含参数化的类型,那么该类就是一个类模板 1.定义 template<typename 类型形参1, typename 类型形参2,...> class 类模板名[:基类]{ 成员变量 成员函数 成员类型 }; 2.使用 类模板名<类型实参1,类型实参2,...> 对象; 类模板名<类型实参1,类型实参2,...> &引用 = 对象; 类模板名<类型实参1,类型实参2,...> *指针 = &对

第61课 智能指针类模板

1. 智能指针的意义 (1)现代C++开发库中最重要的类模板之一 (2)C++中自动内存管理的主要手段 (3)能够在很大程度上避开内存相关的问题(如内存泄漏.内存的多次释放等) 2. STL中的智能指针 (1)auto_ptr智能指针 ①生命周期结束时,销毁指向的内存空间 ②只能用来管理单个动态创建的对象,而不能管理动态创建的数组.即不能指向堆数组,只能指针堆对象(变量) int* pn = new int[100]; auto_ptr<int> ap(pn); //auto_ptr指向堆数组

模板类与类模板、函数模板与模板函数等的区别

在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用.下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误.这几个词是: 函数指针——指针函数 数组指针——指针数组 类模板——模板类 函数模板——模板函数 最终在使用中,我们就可以让它们实至名归,名正言顺. 1.函数指针——指针函数   函数指针的重点是指针.表示的是一个指针,它指向的是一个函数,例子: int   (*pf)(); 指针函数的重点是函数.表示的是一个函数,它的返回值是指针.例子:

4.1 pair类模板

在学习关联容器之前,首先先要了解一下STL中的pair类模板,因为关联容器的一些成员函数返回值都是pair对象,而且map 和multimap中的元素都是pair对象. 1)pair类模板定义 pair实例化出来以后的类都有两个成员变量,一个是first,另一个是second. STL中还有一个make_pair()函数模板,可以返回一个pair模板对象.源码如下: template<class T1, class T2> pair<T1,T2>make_pair(T1 x, T2

实例讲解ThinkPHP的UploadFile文件上传类的详细用法

ThinkPHP文件上传自带了上传类,使用起来非常方便,我们将以一个文件上传实例来讲解ThinkPHP上传类的实际用法,上传类使用时有详细的中文注释,可以非常方便的告诉你类的一些方法或变量的使用方法.FileAction.class.php PHP Code复制内容到剪贴板 <?php class FileAction extends Action{ function index(){ $file=M('file'); $list=$file->select(); $this->assi

28.C++- 单例类模板(详解)

描述 指在整个系统生命期中,一个类最多只能有一个实例(instance)存在,使得该实例的唯一性(实例是指一个对象指针)  , 比如:统计在线人数 在单例类里,又分为了懒汉式和饿汉式,它们的区别在于创建实例的时间不同: 懒汉式 : 指代码运行后,实例并不存在,只有当需要时,才去创建实例(适用于单线程) 饿汉式 : 指代码一运行,实例已经存在,当时需要时,直接去调用即可(适用于多线程) 用法 将构造函数的访问属性设置为private, 提供一个GetInstance()静态成员函数,只能供用户访问

C++ STL pair类模板

关联容器的一些成员函数的返回值是 pair 对象,而且 map 和 multimap 容器中的元素都是 pair 对象.pair 的定义如下: template <class_Tl, class_T2> struct pair { _T1 first; _T2 second; pair(): first(), second() {} //用无参构造函数初始化 first 和 second pair(const _T1 &__a, const _T2 &__b): first(_