- 函数模板
- 用法:
创建一个通用功能的函数
支持多种不同形参
简化重载函数的函数体设计
2.函数模板定义语法
语法形式:template<模板参数表> 函数定义
3.模板参数表的内容
类型参数:class(或typename)标识符
常量参数:类型说明符 标识符
模板参数:template<参数表> class 标识符
4.注意
一个函数模板并非自动可以处理所有类型的数据;只有能够进行函数模板中运算的类型,可以作为类型参数;自定义的类需要重载模板中的运算符,才能作为类型实参
- 类模板
- 类模板的作用
使用类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、成员函数的返回值能取任意类型(包括基本类型和用户自定义类型)
2.类模板的声明
Template<模板参数表> class类名{ 类成员声明};
如果在类模板以外定义其他成员函数,则需要采用以下形式:
Template<模板参数表> 类型名 类名 <模板参数标识符列表>::函数名(参数表)
- 数组类(直接访问的线性群体)
- 静态数组是具有固定元素个数的群体,其中的元素可以通过下标直接访问
- 缺点:大小在编译时就已经确定,在运行时无法修改
- 动态数组由一系列位置连续的,任意数量相同类型的元素组成
- 优点:其元素个数可在程序运行时改变
- 链表的概念和结点类模板
- 顺序访问的线性群体——链表类
- 链表是一种动态数据结构,可以用来表示顺序访问的线性群体
- 链表是由系列结点组成的,结点可以在运行时动态生成
- 每一个结点都包括数据域和指向链表中下一个结点的指针(即下一个结点的地址),如果链表每个结点中只有一个指向后继结点的指针,则该链表称为单链表。
- 顺序访问的线性群体——链表类
- 链表的基本操作
- 生成链表
- 插入结点
- 查找结点
- 删除结点
- 遍历链表
- 清空链表
- 栈类模板
- 栈是只能从一端访问的线性群体,是一种后进后出的数据结构
- 栈的基本状态
- 栈空
- 栈满
- 一般状态
- 栈的基本操作
- 初始化
- 入栈(压栈)
- 出栈
- 清空栈
- 访问栈顶元素
- 检测栈的状态(满、空)
- 队列类
- 队列是只能向一端添加元素,从另一端删除元素的线性群体。是一种先进先出的结构。
- 队列的基本状态
- 对空
- 队满
- 一般状态
- 排序概述
- 排序:将数组元素的任意序列,重新排列成一个按关键字有序的序列
- 数据元素:数据的基本单位。在计算机中通常作为一个整体进行考虑。一个数据元素可由若干数据项组成。
- 关键字:数据元素中某个数据项的值,用它可以标识一个数据元素。
- 在排序中需要完成的两种基本操作
- 比较两个数的大小
- 调整元素在序列中的位置
- 内部排序与外部排序
- 内部排序:待排序的数据元素存放在计算机内存中进行的排序过程
- 外部排序:待排序的数据元素数量很大,以至内存中一次不能容纳全部数据,在排序过程中尚需对外存进行访问的排序过程。
- 选择排序:每次从待排序的序列中选择一个关键字最小的元素,(当需要按关键字升序排序时),顺序排在已排序序列的最后,直至全部排完。
- 交换排序:两两比较待排序序列中的元素,并交换不满足顺序要求的各元素,直到全部满足顺序要求为止。
- 查找
- 顺序查找:从序列的首元素开始,逐个元素与待查找的关键字进行比较。
- 二分法查找(折半查找):对于已按关键字排序的序列,经过一次比较,可将序列分割成两部分,然后只有在有可能包含待查元素的一部分中继续查找,并根据试探结果继续分割,直到找到或找不到为止。
*********************************************************************************************************************************************************这一篇更新地比较慢了,也由此可以看出进入2018年8月后w'd我的松懈,从明天开始,继续努力,加油!每一天都不能懈怠,因为懈怠会成为一种习惯,那就是lan'懒病。而勤快也会成为一种习惯,那就是成功!