c++模板例题
Posted luoqingci
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++模板例题相关的知识,希望对你有一定的参考价值。
一、问题描述。
1 编写一个程序,使用类模板对数组元素进行排序,倒置、查找和求和
2 具有对数组元素进行排序,倒置、查找和求和功能,
3 然后产生类型实参分别为int型和double型的两个模板类,
4 分别对整型数组与双精度数组完成所要求的操作
实现代码:
#include<iostream>
using namespace std;
const int SIZE=100;
// Array -> 模板类(类模板)
template <class Type>
class Array
private:
int l, z;
Type a[SIZE];
public:
Array(Type *b, int n)
int i;
l = n;
cout << "Array构造函数: " << endl; // debug
for(i=0;i<l;i++)
a[i] = b[i];
cout << a[i] << " "; cout << endl; void paixu(); void daozhi(); void chazhao(Type t); void add();
void sort();
void reverse();
void find(Type t);
void sum();
;
template <class Type>
void Array<Type>::sort()
Type c[SIZE];
int i, j, m;
for(i=0;i<l;i++)
c[i] = a[i];
// 排序 升序排序
for(j=0;j<l;j++)
for(j=i;j<l;j++)
if(c[i]>c[j])
m = c[i];
c[i] = c[j];
c[j] = m;
for(i=0;i<l;i++)
cout << c[i] << " ";
cout << endl;
template <class Type>
void Array<Type>::reverse()
int i;
Type d[l]; // 声明数组
for(i=0;i<l;i++)
// int d[i] = a[l-1-i];
d[i] = a[l-1-i];
cout << d[i] << " ";
cout << endl;
template <class Type>
void Array<Type>::find(Type t)
int e = 0;
int flag = 0; // 0表示未找到
for(int i=0;i<l;i++)
if(a[i]==t)
flag = 1;
cout << "是第" << i+1 << "个元素" << endl;
e = i;
break;
// 判断是否未找到该元素
if(flag==0)
cout << "未找到该元素" << endl;
template <class Type>
void Array<Type>::sum()
int i;
Type res = 0; // res应该初始化
for(i=0;i<l;i++)
res += a[i];
cout << "数组和为:" << res <<endl;
int main()
int i, x, y, q;
double p;
// 构建初始数组
cout << "请输入两种类型数组元素个数: " << endl;
cin >> x >> y;
int *a;
double *b;
a = new int[x];
b = new double[y];
cout<<"请输入int型数组元素"<<endl;
for(i=0;i<x;i++)
cin >> a[i];
cout << "请输入double型数组元素" << endl;
for(i=0;i<y;i++)
cin >> b[i];
// 用初始数组初始化 模板类数组
Array<int> c(a,x);
Array<double> d(b,y);
cout << "int 型数组:" << endl;
cout << "排序:" << endl;
c.sort();
cout << "倒置:" << endl;
c.reverse();
cout << "请输入要查找的元素: ";
cin >> q;
c.find(q);
cout << "求和:" << endl;
c.sum();
// double型数组功能展示
cout << "double 型数组:" << endl;
cout << "排序:" << endl;
d.sort();
cout << "倒置:" << endl;
d.reverse();
cout << "请输入要查找的元素: ";
cin >> p;
c.find(p);
cout << "求和:" << endl;
d.sum();
delete []a;
delete []b;
return 0;
算法基础:差分算法及模板应用
⭐写在前面的话:本系列文章旨在复习算法刷题中常用的基础算法与数据结构,配以详细的图例解释,总结相应的代码模板,同时结合例题以达到最佳的学习效果。本专栏面向算法零基础但有一定的C++基础的学习者。若C++基础不牢固,可参考:10min快速回顾C++语法,进行语法复习。
以上是关于c++模板例题的主要内容,如果未能解决你的问题,请参考以下文章