樣版.

Slides:



Advertisements
Similar presentations
专题复习 --- 走进名著 亲近经典 读完《鲁滨孙漂流记》这本精彩的小说 后,一个高大的形象时时浮现在我的眼 前,他就是勇敢的探险家、航海家鲁滨 孙。他凭着顽强的毅力,永不放弃的精 神,实现了自己航海的梦想。 我仿佛看到轮船甲板上站着这样的一 个人:他放弃了富裕而又舒适的生活, 厌恶那庸庸碌碌的人生,从而开始了一.
Advertisements

第一單元 建立java 程式.
控制方长投下的子公司,需要编制合并报表的演示思路
P2P金融信用调查服务 2015年4月 诚信为先 中道厚德.
每节一经典 用系统的观点观察问题 总体设计,逐步求精 计算机科学学院 王小明 (博士/教授/博士生导师)
小微企业融资担保产品介绍 再担保业务二部 贾天
第四章 继承与派生 Chapter 4 Inheritance and Derivation
四資二甲 第三週作業 物件導向程式設計.
第6章 多态性与虚函数.
第二章 线性表 1 线性表的逻辑结构及其基本操作 2 线性表的顺序存储结构 3 线性表的链式存储结构 4 静态链表 5 应用实例.
第4章 数组 数组是由一定数目的同类元素顺序排列而成的结构类型数据 一个数组在内存占有一片连续的存储区域 数组名是存储空间的首地址
第三章 控制结构.
資料結構設計與C++程式應用 Fundamentals of Data Structures and Their Applications Using C++ 第3章 佇列 資料結構設計與C++程式應用.
Chap 18 類別與物件 夫有土者,有大物也。有大物者,不可以物。 物而不物,故能物物。 明乎物物者之非物也,豈獨治天下百姓而已哉!
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
第4章 函数与预处理 4.1 概述 4.2 定义函数的一般形式 4.3 函数参数和函数的值 4.4 函数的调用 *4.5 内置函数
第五章 数组和 广义表 数组 稀疏矩阵 广义表.
第七章 搜索结构 静态搜索结构 二叉搜索树 AVL树.
哈夫曼编码.
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程序设计期末复习 黎金宁
第三章 C++中的C 面向对象程序设计(C++).
程式撰寫流程.
類別(class) 類別class與物件object.
第八章 类与对象 本章要求: 掌握类的含义与定义格式。 掌握类的无参构造函数、带参构造函数、拷贝构造函数和赋值重载函数的定义格式及作用。
(Circular Linked Lists)
第二章 C++对C 在非面向对象方面的改进 更简洁,更安全.
第四章 小技巧.
面向对象程序设计 QQ群: Object-Oriented Programming 汽车学院.
Java 程式設計 講師:FrankLin.
Chap3 Linked List 鏈結串列.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第一單元 建立java 程式.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第三章 链表 单链表 循环链表 多项式及其相加 双向链表 稀疏矩阵.
C++面向对象程序设计 谭浩强编著 授课教师:姬广永 QQ: 学习网站:
C++大学基础教程 第11章 多态性 北京科技大学 信息基础科学系 2019/4/8 北京科技大学.
第五章 递归与广义表 递归的概念 递归过程与递归工作栈 递归与回溯 广义表.
第12讲 多继承与虚基类 多继承 虚基类.
C语言复习3----指针.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
C++复习2----类与对象.
Oop8 function函式.
第四章 栈和队列 栈 ( Stack ) 队列 ( Queue ) 优先队列 (Priority Queue) 小结.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
Class & Object 靜宜大學資工系 蔡奇偉副教授 ©2011.
C++语言程序设计教程 第2章 数据类型与表达式 第2章 数据类型与表达式 制作人:杨进才 沈显君.
第二章 Java语法基础.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
面向对象技术 练习 ffh.
C++程序设计基础 主讲人:谢昕 华东交通大学信息工程学院 第十~十二讲 多态性和虚函数 2005年春季学期.
累堆排序法 (Heap Sort).
第九章 物件導向-進階.
陣列與結構.
第 9 章 建構函式與解構函式.
目标 流程控制 字符串处理 C# 的类和对象 C# 访问修饰符 C# 构造函数和析构函数.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
挑戰C++程式語言 ──第9章 函數.
#include <iostream.h>
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第十章 多态 第十一组 C++语言程序设计.
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
JAVA 程式設計與資料結構 第三章 物件的設計.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
C++程序语言设计 Chapter 14: Templates.
第二章 Java基础语法 北京传智播客教育
第六章 复合数据类型 指针的声明与使用 数组的声明与使用 指针与数组的相互引用 字符串及相关库函数 new与delete
Presentation transcript:

樣版

本章重點 13-1 樣板 13-2 樣板類別成員 13-3 樣板實戰

13-1 樣板 樣版 樣版就如同一個模子,從現實的角度來看,我們將石膏與水混合後,在加入模子中,它就能印出特定的形狀出來,而在樣版的觀念裡,石膏與水是資料型態,產生出來的成品則是類別或函數。 石膏 水 樣版

樣版函數 template <class 樣版參數> 回傳資料的型態 函數名稱(參數,…) { . }

資料交換樣版 template <class X> void Max_and_Min(X i,X j) { if (i>j) cout<<"Max is "<<i<<". Min is "<<j<<"\n"; else cout<<"Max is "<<j<<". Min is "<<i<<"\n"; }

樣版類別 1 class A 2 { 3 protected: 4 int x; 5 public: 6 A(int y){x=y;} 2            { 3            protected: 4            int x; 5            public: 6            A(int y){x=y;} 7            void show() 8            { 9            cout<<"x: "<<x<<"\n"; 10        } 11        };

宣告類別變數 類別名稱<資料型態>物件名稱(參數);

1            void main() 2            { 3            int xy = 10; 4            A<int> aa(10); 5            aa.show(); 6            7            char pp = 'a'; 8            A<char> bb(pp); 9            bb.show(); 10        }

13-2 樣板類別成員 鏈結串列就是將每一個單位的資料串連起來,而型成一個大型的資料庫,鏈結串列的資料可以從第一個新增刪除、最後一個新增刪除以及從中間新增刪除,非常符合資料處理的原則。

鏈結串列 1 1 2 N-1 N ………………………. 指向 指向 指向

鏈結串列中間插入一筆資料 P 1 2 N-1 N ………………………. P 1

樣版類別示範 1 template <class T> 2 class A 3 { 4 private: 5 T data; 3            { 4            private: 5            T data; 6            static A* a_head; 7            static A* a_now; 8            A* a_next; 9            public: 10        A() {a_head=a_now=this;a_next=NULL;} 11        A(T node_data):data(node_data),a_next(NULL){} 12        void add(T new_data); 13        void show(); 14        };

樣版類別成員的定義 template<class 參數型態> class 類別名稱 {…};

樣版類別標頭檔(1) 1 #ifndef _A 2 #define _A 3 4 template <class X> 3            4            template <class X> 5            class B; 6            7            template <class X> 8            void show_x(X t); 9            10        template <class X> 11        class A 12        { 13        public: 14        X i; 15        A(){} 16        friend class B<X>; 17        friend void show_x(X t1); 18        }; 19        20        #endif

樣版類別標頭檔(2) 1 #ifndef _H 2 #define _H 3 4 template <class X> 3            4            template <class X> 5            class A; 6            7            template <class X> 8            class B 9            { 10        A<X> aa; 11        public: 12        B(X tz){aa.i=tz;} 13        void show_z() 14        { 15        cout<<"B is A's friend. And A's i is "<<aa.i<<"\n"; 16        } 17        }; 18        19        20        template <class X> 21        void show_x(X t1) 22        { 23        A<X> aa; 24        aa.i = t1; 25        cout<<"show_x function is A's friend. And A's i is "<<aa.i<<"\n"; 26        } 27        28        #endif

朋友樣版類別示範 1 #include <iostream.h> 2 #include "ch13_7_1.h" 4            5            void main() 6            { 7            B<int> bb(10); 8            bb.show_z(); 9            10        show_x(12.8f); 11        }

13-3 樣版實戰 1 template<class T> 2            void A<T>::inadd(int index,T new_data) 3            { 4            int i=0; 5            a_now = a_head->a_next; 6            while (i<index && a_now!=NULL) 7            { 8            a_now = a_now->a_next; 9            i++; 10        } 11        12        if (a_now!=NULL) 13        { 14        A *temp_data = new A(0); 15        temp_data = a_now->a_next; 16        a_now->a_next = new A(new_data); 17        a_now = a_now->a_next; 18        a_now->a_next = temp_data; 19        } 20        }

從最前面插入,如下列程式碼所示: 1 template<class T> 2            void A<T>::headadd(T new_data) 3            { 4            A * new_node = new A(new_data); 5            A *temp_data = a_head->a_next; 6            a_head->a_next = new_node; 7            a_head->a_next->a_next = temp_data; 8            }

函數成員是用來處理資料可以從鏈結串列中間插入