c++函数模板的简单问题
采用函数模板,实现将数组元素反转,并输出结果。(如:原数组元素为:1,2,3,4,5,反转后数组元素为:5,4,3,2,1)。要求:1)定义函数模板:a)函数模板void...
采用函数模板,实现将数组元素反转,并输出结果。
(如:原数组元素为:1,2,3,4,5, 反转后数组元素为: 5,4,3,2,1)。
要求: 1) 定义函数模板:
a) 函数模板 void reverse(T a[], int len):实现数组 a 元素反转;
b) 函数模板 output:实现数组元素的输出;
2) 利用标准 C++string 类处理字符串;
3) 在主程序中通过定义相应数组,并使用下面的数据初始化,通过调用函数模板 reverse,实现下面数组的反转:
a) { 1, 3, 5, 7, 9, 11}
b) {‘c’, ‘[‘, ‘]’, ‘1’, ‘0’, ‘$’, ‘%’}
c) {“aaa”, “bbb”, “ccc”, “ddd”}
4) 设计合适的结果输出形式,可将原始数组和反转后的结果输出原始数据及反转 结果;
5) reverse 模板参数采用显示指定,output 模板参数采用隐式指定 展开
(如:原数组元素为:1,2,3,4,5, 反转后数组元素为: 5,4,3,2,1)。
要求: 1) 定义函数模板:
a) 函数模板 void reverse(T a[], int len):实现数组 a 元素反转;
b) 函数模板 output:实现数组元素的输出;
2) 利用标准 C++string 类处理字符串;
3) 在主程序中通过定义相应数组,并使用下面的数据初始化,通过调用函数模板 reverse,实现下面数组的反转:
a) { 1, 3, 5, 7, 9, 11}
b) {‘c’, ‘[‘, ‘]’, ‘1’, ‘0’, ‘$’, ‘%’}
c) {“aaa”, “bbb”, “ccc”, “ddd”}
4) 设计合适的结果输出形式,可将原始数组和反转后的结果输出原始数据及反转 结果;
5) reverse 模板参数采用显示指定,output 模板参数采用隐式指定 展开
2个回答
展开全部
#include <iostream>
#include <string>
using namespace std;
template<class T>
class InvertDemo
{
public:
void reverse(T a[],int len);
void output(T a[],int len);
void swaping(T *left,T *right);
private:
};
template<class T>
void InvertDemo<T>::output(T a[],int len){
for(int i=0;i<len;i++) cout<<a[i]<<" ";
cout<<endl;
}
template<class T>
void InvertDemo<T>::swaping(T *left,T *right){
T temp=*left;
*left=*right;
*right=temp;
}
template<class T>
void InvertDemo<T>::reverse(T a[],int len){
int i,k=-1,j;
for (i=k+1;i<len;i++){ // 扭转头部与尾部的元素
j=len-i+k;
if(i>=j) break;// 无需扭转
swaping(&a[i],&a[j]);
}
}
int main()
{
InvertDemo<int> id_int;
int a[]={ 1, 3, 5, 7, 9, 11};
cout<<"扭转前:";
id_int.output(a,6);
id_int.reverse(a,6); // 开始扭转
cout<<"扭转后:";
id_int.output(a,6);
InvertDemo<char> id_char;
char b[]={'c','[',']','1','0','$','%'};
cout<<"扭转前:";
id_char.output(b,6);
id_char.reverse(b,6); // 开始扭转
cout<<"扭转后:";
id_char.output(b,6);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询