类模板->容器,函数模板->算法
1.函数模板:
使用情况:算法逻辑一致,数据类型不一致,需要写多个重载函数,带来数据冗余和更改时的便利
template <typename T>
编译器会置换T,但需要注意运算符是否重载
2.类模板:
template <typename T> class类名{类成员声明}
3.线性群体的概念
多个数据元素的群体
线性群体:有一定规律的群体
直接访问、顺序访问、索引访问
4.直接访问的线性群体:通用数组类:动态数组类(在STL中为vector)
- 为甚么有的函数返回为引用: 因为一个函数返回值为一个对象的值,那就是右值,不能成为左值,若返回值为引用,通过引用可以改变对象的值,因此为左值
- 右值就是一个临时变量(后面将详细的解释),只有临时地址空间,左值有其地址空间
5.顺序访问的线性群体:链表类
结点:数据,指向下一个节点的指针
便于插入删除
6.栈类模板:后进先出
7.队列类:先进先出
循环队列
8.排序:比较大小、调整元素在序列中的位置
插入排序:
选择排序:在待排序序列中,选择最小的元素交换
交换排序:(冒泡排序)两两比较,若不满足次序,则交换,直到全部满足次序
9.查找:
顺序查找:没有排过序的查找
二分查找:已排序的序列,先找中点位置,比较中点元素跟待找元素的大小