当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

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

资源类别:文库,文档格式:PPT,文档页数:71,文件大小:445KB,团购合买
1. 概论 2. 模板机制的介绍 3. STL中的基本概念 4. 容器概述 5. 迭代器 6. 算法简介
点击下载完整版文档(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

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共71页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有