清华大学C++课程学习笔记——第九章群体类和群体数据的组织

这篇博客详细介绍了C++中的模板应用,包括函数模板、类模板、数组类模板、结点类模板、栈模板和队列类模板的背景、使用及操作。此外,还讨论了排序的基本概念和几种常见的排序方法,如选择排序和交换排序。
摘要由CSDN通过智能技术生成

(一)模板
1.函数模板
(1)背景描述:
同种逻辑处理不同类型的数据,需要重新写一个函数;
多个函数会给函数的修改带来困难、不一致问题
重载函数虽然为使用者提供了方便,但是编写者仍然需要都写一遍。
(2)模板使用

	template<模板参数表>
	函数定义

模板参数表的内容

参数名称 标识符
类型参数 class /typename标识符(类型也可以作为参数传递)
常量参数 类型说明符 标识符
模板参数 template <参数表>class 标识符

eg:求绝对值函数模板

# include <iostream>
using namespace std;

template<typename T>
T abs(T x){
   
	return x<0?-x:x;
}
int  main(){
   
	int n = -5;
	double d = -5.5;
	cout<<abs(n)<<endl;
	cout<<abs(d)<<endl;
}

【注意】
2.类模板
(1)背景描述
为类声明一种模式;
使得类中的某系数据成员、成员函数参数、成员函数的返回值能取任意类型。
(2)模板使用
抽象数据类型
在这里插入图片描述
3.数组类模板
(1)背景描述
长度不可调、下标越界无法处理;
数组类——直接访问的线性群体
静态数组具有固定元素个数的群体、元素可以通过下标直接访问;
动态数组由一系列位置连续,任意数量相同类型的元素组成,元素个数在程序运行时可以改变;
< vector>实际上就是封装了一个动态数组
(2)模板使用
在这里插入图片描述
首先保证后一段链表有头结点,不然链表的后半部分就丢了

指针转换运算符使用
4.结点类模板
(1)背景描述
数组:在插入和删除元素时,其他元素也在频繁的移动
链表:动态数据结构,可以用来表示顺序访问的线性群体
由系列节点组成,结点可以在运行时动态生成(数据域和指向链表中下一个结点的指针);
链表的头指针非常重要
(2)模板使用

//9_5.h
#ifndef 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值