北京大学:C++模板与STL库介绍(PPT讲稿)

C++模板与ST库介绍 单栋栋 sdd(anet. pku. edu.cn
C++模板与STL库介绍 单栋栋 sdd@net.pku.edu.cn

提纲 口1.概论 口2.模板机制的介绍 口3.STL中的基本概念 口4容器概述 口5.迭代器 口6.算法简介
提纲 1. 概论 2. 模板机制的介绍 3. STL中的基本概念 4. 容器概述 5. 迭代器 6. 算法简介

概论 口C++语言的核心优势之一就是便于软件的重用 口C++中有两个方面体现重用: ■1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计 generic programming)的思想:模板 机线、以及标准模板库STL 这次课的重点
概论 C++ 语言的核心优势之一就是便于软件的重用 C++中有两个方面体现重用: ◼ 1. 面向对象的思想:继承和多态,标准类库 ◼ 2. 泛型程序设计(generic programming) 的思想:模板 机制,以及标准模板库 STL 这次课的重点

泛型程序设计 口泛型程序设计,简单地说就是使用模板的程序设计法。 将一些常用的数据结构(比如链表,数组,二叉树)和算法 (比如排序,查找)写成模板,以后则不论数据结构里放的是 什么对象,算法针对什么样的对象,则都不必重新实现数据结 构,重新编写算法。 口标准模板库( Standard Template Library)就是一些常用数 据结构和算法的模板的集合。主要由 Alex stepanov开 发,于1998年被添加进C+标准 口有了STL,不必再从头写大多的标准数据结构和算法, 并且可获得非常高的性能
泛型程序设计 泛型程序设计,简单地说就是使用模板的程序设计法。 ◼ 将一些常用的数据结构(比如链表,数组,二叉树)和算法 (比如排序,查找)写成模板,以后则不论数据结构里放的是 什么对象,算法针对什么样的对象,则都不必重新实现数据结 构,重新编写算法。 标准模板库 (Standard Template Library) 就是一些常用数 据结构和算法的模板的集合。主要由 Alex Stepanov 开 发,于1998年被添加进C++标准 有了STL,不必再从头写大多的标准数据结构和算法, 并且可获得非常高的性能

模板引子 1假如设计一个求两参数最大值的函数,在实践中我们可 能需要定义四个函数: int max (int a, int b) return(a>b)?a, b;) long max(long a, long b)i return(a>b)? a, b; i double max( double a, double b)i return(a>b)?a, b;) char max( char a, char b) return(a>b)? a, b; 1 2这些函数几乎相同,唯一的区别就是形参类型不同 3需要事先知道有哪些类型会使用这些函数,对于未知类 型这些函数不起作用
模板引子 1.假如设计一个求两参数最大值的函数,在实践中我们可 能需要定义四个函数: int max ( int a , int b ) { return ( a > b ) ? a , b ; } long max ( long a , long b ) { return ( a > b ) ? a , b ;} double max ( double a , double b ) { return ( a >b)? a , b ; } char max ( char a , char b ) { return ( a > b ) ? a , b ;} 2.这些函数几乎相同,唯一的区别就是形参类型不同 3.需要事先知道有哪些类型会使用这些函数,对于未知类 型这些函数不起作用

模板的概念 1.所谓模板是一种使用无类型参数来产生一系列 函数或类的机制。 2.若一个程序的功能是对某种特定的数据类型进 行处理,则可以将所处理的数据类型说明为参 数,以便在其他数据类型的情况下使用,这就 是模板的由来。 3.模板是以一种完全通用的方法来设计函数或类 而不必预先说明将被使用的每个对象的类型。 4.通过模板可以产生类或函数的集合,使它们操 作不同的数据类型,从而避免需要为每一种数 据类型产生一个单独的类或函数
模板的概念 1. 所谓模板是一种使用无类型参数来产生一系列 函数或类的机制。 2. 若一个程序的功能是对某种特定的数据类型进 行处理,则可以将所处理的数据类型说明为参 数,以便在其他数据类型的情况下使用,这就 是模板的由来。 3. 模板是以一种完全通用的方法来设计函数或类 而不必预先说明将被使用的每个对象的类型。 4. 通过模板可以产生类或函数的集合,使它们操 作不同的数据类型,从而避免需要为每一种数 据类型产生一个单独的类或函数

模板分类 口函数模板( function template) ■是独立于类型的函数 1可产生函数的特定版本 口类模板( class template) 跟类相关的模板,如 vector 可产生类对特定类型的版本,如 vector
模板分类 函数模板(function template) ◼ 是独立于类型的函数 ◼ 可产生函数的特定版本 类模板(class template) ◼ 跟类相关的模板,如vector ◼ 可产生类对特定类型的版本,如vector 7

求最大值模板函数实现 1求两个数最大值,使用模板 template class T> T max(Ta, tbi return(a>b)? a, b 2 template (模板函数形参表) /函数定义体
求最大值模板函数实现 1.求两个数最大值,使用模板 template T max(T a , T b){ return ( a > b ) ? a , b; } 2.template (模板函数形参表) { //函数定义体 } 8

模板工作方式 口函数模板只是说明,不能直接执行,需要实例 化为模板函数后才能执行 口在说明了一个函数模板后,当编译系统发现有 一个对应的函数调用时,将根据实参中的类型 来确认是否匹配函数模板中对应的形参,然后 生成一个重载函数。该重载函数的定义体与函 数模板的函数定义体相同,它称之为模板函数
模板工作方式 函数模板只是说明,不能直接执行,需要实例 化为模板函数后才能执行 在说明了一个函数模板后,当编译系统发现有 一个对应的函数调用时,将根据实参中的类型 来确认是否匹配函数模板中对应的形参,然后 生成一个重载函数。该重载函数的定义体与函 数模板的函数定义体相同,它称之为模板函数 9

编写一个对具有n个元素的数组[求最小值的程序,要求 将求最小值的函数设计成函数模板。 #include void maino template {inaa={1,3,0,2,7,6,4,5,2}; T min(t[l, int n double b]={1.2,-3.4689,8}; int 1 coutaD cou<<b数组的最小值为:” minv=a <<min(b, 4 < endl; 此程序的运行结果为: return miny a数组的最小值为:0 b数组的最小值为:-3.4
#include template T min(T a[],int n) { int i; T minv=a[0]; for( i = 1;i a[i]) minv=a[i]; } return minv; } 编写一个对具有n个元素的数组a[ ]求最小值的程序,要求 将求最小值的函数设计成函数模板。 void main() { ina a[]={1,3,0,2,7,6,4,5,2}; double b[]={1.2,-3.4,6.8,9,8}; cout<<”a数组的最小值为:” <<min(a,9)<< endl; cout<<”b数组的最小值为:” <<min(b,4)<<endl; } 此程序的运行结果为: a数组的最小值为:0 b数组的最小值为:-3.4
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数据库基础》课程教学资源(PPT课件讲稿)第四章 数据查询.ppt
- 《网络搜索和挖掘关键技术 Web Search and Mining》课程教学资源(PPT讲稿)Lecture 08 Scoring and results assembly.ppt
- 上海海事大学:《数字图像处理》课程教学资源(PPT课件讲稿)Unit 7 Introduction to Digital Image Processing.ppt
- Performance Evaluation of Long Range Dependent Queues(PPT讲稿).pptx
- 《C语言程序设计》课程电子教案(PPT课件讲稿)第二章 基本数据类型及运算.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)模式&框架 Pattern & Framework.ppt
- 《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第二讲 关系数据库.ppt
- 《计算机辅助设计》课程介绍.pdf
- 沈阳工程学院:《面向对象程序设计》课程教学大纲(适用专业:计算机科学与技术专业).pdf
- 《编译原理》课程教学资源(PPT课件讲稿)从正则表达式到有限自动机.pptx
- Introduction to Computing Using Java(PPT讲稿)Java Language Basics.ppt
- 《物联网导论》课程教学资源(PPT课件讲稿)第2章 自动识别技术与RFID.ppt
- 《计算机维修》课程教学资源(PPT课件讲稿)第3章 磁盘工具.ppt
- 《数据结构》课程PPT教学课件(讲稿)第一章 数据结构基础.ppsx
- 华北科技学院:图像的采集与处理(PPT课件讲稿)Photoshop CS.ppt
- 《JAVA与面向对象编程》课程教学资源(PPT课件讲稿)第二章 Java语法基础.ppt
- 《C语言程序设计》课程电子教案(PPT教学课件)第四章 选择结构程序设计.ppt
- 西安交通大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第7章 模拟量输入输出接口.ppt
- Wrapper Generation and HTML Reduction(PPT讲稿).ppt
- 《微机原理》课程教学资源(PPT课件讲稿)第九章 可编程接口芯片及其与CPU的接口.ppt
- Computer Graphics(PPT讲稿)INFORMATION VISUALIZATION.pptx
- 档案数字化基本程序与要求(PPT讲稿).ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第5章 指令级并行.pptx
- 上海交通大学:《程序设计》课程教学资源(PPT课件讲稿)第14章 输入输出与文件.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第7章 多处理器及线程级并行.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第五章 语法制导的翻译.ppt
- 河南中医药大学:《网络技术实训》课程教学资源(PPT课件讲稿)第一阶段 组网(主讲:路景鑫).pptx
- 《SQL基础教程》课程教学资源(PPT课件讲稿)第6章 数据操作与SQL语句.ppt
- 《计算机基础及C语言程序设计》课程PPT教学课件(讲稿)第1章 概论.ppt
- 西安交通大学:《网络与信息安全》课程PPT教学课件(网络入侵与防范)身份认证.ppt
- 《计算机网络和因特网》教学资源(PPT讲稿)网络互连(概念, IP 地址, IP 路由, IP 数据报, 地址解析).ppt
- 《高级语言程序设计》课程教学资源(试卷习题)试题四(无答案).doc
- 上海交通厌:《通信网络》课程教学资源(PPT讲稿)DELAY MODELS IN DATA NETWORKS、LITTLE’S LAW、ARRIVAL MODEL、M/M/X QUEUING MODELS.pptx
- 《软件工程》课程教学资源(PPT课件讲稿)第7章 软件测试.ppt
- 《计算机网络安全》课程教学资源(PPT课件讲稿)第二章 密码学技术.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)语法分析 Syntax analysis(自底向上分析 Bottom-Up Parsing).ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一章 绪论.ppt
- 《计算机组成原理》课程教学资源(PPT课件讲稿)第四章 存储器.ppt
- 随机图与复杂网络(PPT讲稿)随机演化博弈的算法研究及其在复杂网络中的应用.ppt
- 四川大学:《操作系统 Operating System》课程教学资源(PPT课件讲稿)Chapter 3 Process Description and Control.ppt