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 模板参数采用隐式指定
展开
 我来答
仙戈雅3n
2014-12-21 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:906万
展开全部
#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;
}
仝涵易046
2014-12-21 · 超过21用户采纳过TA的回答
知道答主
回答量:105
采纳率:0%
帮助的人:52.3万
展开全部
这种题目最好自己做
追问
做出来的编译不通过,你要不帮忙看看?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式