c++复习(4)函数模板与类模板

前言

懒狗(指自己)复(yu)习最后一期了。希望不会挂科。。

函数模板

通过template关键字,指定类型,使得函数能够用统一的操作去处理。比如排序:

for(int i=0; i<n; i++)
	for(int j=0; j<n; j++)
		if(a[i]>a[j]) swap(a[i), a[j];

可是a变量的数据类型可以是int数组或者是double数组。如果对不同的数组进行处理,会要编写不同参数类型的函数,这很麻烦,而函数模板可以解决这个问题。

使用template关键字,即template<class T>指定类型T,并且在函数的参数中传入对应的类型T,可以将相同的操作套到不同类型的数据上。(T也可以是别的名字,比如Type)

排序函数模板

template<class T>
void mySort(vector<T>& a)
{
   
	for(int i=0; i<n; i++)
		for(int j=0; j<n; j++)
			if(a[i]>a[j]) swap(a[i), a[j];
}

值得注意的是,函数模板要求参数必须出现指定的类型,即必须出现T (T也可以是别的名字,比如Type)
,除此之外,还可以指定多个类型,比如

template<class T1, class T2>

指定多个类型的代价是形参中出现的类的顺序必须和template中相同

类模板

类模板和函数模板类似,通过template关键字指定类型,值得注意的是,声明时要带上<>,比如最常见的vector

vector<int> arr;

除此之外,多个类型的指定,即template<class T1, class T2>也是可以的(比如c++的pair)。

数据排序(函数模板)

题目描述

编写一个进行升序排序的函数模板,其中数组为具有n个元素,类型为T。

注意:必须使用模板函数

输入

第一行输入t表示有t个测试实例

第二行先输入一个大写字母表示数组类型,I表示整数类型,C表示字符型,S表示字符串型,D表示双精度数类型;然后输入n表示数组长度。

第三行输入n个数据

依次输入t个实例

输出

每行输出一个结果

样例输入

4
I 10
15 3 51 27 9 35 78 14 65 8
D 3
-11.3 25.42 13.2
C 6
a b g e u q
S 4
sandy david eason cindy

样例输出

3 8 9 14 15 27 35 51 65 78 
-11.3 13.2 25.42 
a b e g q u 
cindy david eason sandy 

代码

连快排都不会了,我爬

#include <iostream>
#include <string>
#include <algorithm>
#include <map>
#include <cmath> 
#include <iomanip>
#include <vector>
#include <set>

using namespace std;

template<class T>
void mySort(vector<T>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值