C++ 定义数组类模板
Posted 猛男Banana君
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ 定义数组类模板相关的知识,希望对你有一定的参考价值。
题目:
定义数组类模板,能够对数组元素进行排序、倒置、查找和求和,产生类型实参分别为int型和double型的两个模板类。从键盘输入数据到整型数组与双精度数组中,创建两个数组类对象,分别对整型数组与双精度型数组对象完成上述操作。
代码:
#include<bits/stdc++.h>
using namespace std;
#define MAXSIZE 100
template<class Type>
class Array
{
int len,z;
Type a[MAXSIZE];
public:
Array(Type *b, int n)
{
int i;
len=n;
for(i=0;i<len;i++)
{
a[i]=b[i];
}
}
//函数声明
void print();
void sort();
void reverse();
void find(Type t);
void sum();
};
//打印数组
template <class Type>
void Array<Type>::print()
{
for(int i=0;i<len;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
//升序排序
template <class Type>
void Array<Type>::sort()
{
Type c[MAXSIZE];
int i,j,m;
for(i=0;i<len;i++)
{
c[i]=a[i];
}
for(j=0;j<len;j++) //冒泡排序
{
for(j=i;j<len;j++)
{
if(c[i]>c[j])
{
m=c[i];
c[i]=c[j];
c[j]=m;
}
}
}
for(i=0;i<len;i++)
{
cout<<c[i]<<" ";
}
cout<<endl;
}
//倒置数组
template <class Type>
void Array<Type>::reverse()
{
int i;
Type d[len];
for(i=0;i<len;i++)
{
d[i]=a[len-i-1];
cout<<d[i]<<" ";
}
cout<<endl;
}
//查找数组元素
template <class Type>
void Array<Type>::find(Type t)
{
int flag=0;
for(int i=0;i<len;i++)
{
if(a[i]==t)
{
flag=1;
cout<<"该元素是第"<<i+1<<"个元素"<<endl;
break;
}
}
if(flag==0)
{
cout<<"未找到该元素"<<endl;
}
}
//数组求和
template <class Type>
void Array<Type>::sum()
{
int i;
Type add=0;
for(i=0;i<len;i++)
{
add+=a[i];
}
cout<<"数组和为:"<<add<<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<<"\\nint 型数组:"<<endl;
cout<<"打印:"<<endl;
c.print();
cout<<"排序:"<<endl;
c.sort();
cout<<"倒置:"<<endl;
c.reverse();
cout<<"请输入要查找的元素: ";
cin>>q;
c.find(q);
cout<<"求和:"<<endl;
c.sum();
cout<<"\\ndouble 型数组:"<<endl;
cout<<"打印:"<<endl;
d.print();
cout<<"排序:"<<endl;
d.sort();
cout<<"倒置:"<<endl;
d.reverse();
cout<<"请输入要查找的元素: ";
cin>>p;
d.find(p);
cout<<"求和:"<<endl;
d.sum();
delete []a;
delete []b;
return 0;
}
以上是关于C++ 定义数组类模板的主要内容,如果未能解决你的问题,请参考以下文章