新手求助!我想写一个数组排序模板函数,但是里面加了一些条件,就是当这个调用这个函数的数组类型为字符串类型时,大小排序更改为字符串长度排序
代码如下,但是运行时当数组类型不为字符串类型时会报错,求指点!!!#include <iostream>
#include <string>
using namespace std;
template<typename T, int n>
void Sort(T (&a)[n])
{
int len = sizeof(a) / sizeof(*a);
if(typeid(T) == typeid(string))
{
for(int i = 0; i < len - 1; i++)
{
for(int j = 0; j < len - i - 1; j++)
{
if(a[j].length() > a[j+1].length())
{
T temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
cout << "one string" << endl;
}
else
{
for(int i = 0; i < len - 1; i++)
{
for(int j = 0; j < len - i - 1; j++)
{
if(a[j] > a[j+1])
{
T temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
}
int main()
{
char ch[5] = {'b', 'd', 'a', 'c', 'e'};
int nums[8] = {4, 5, 3, 7, 8, 0, 2, 8};
string str[4] = {"sdf", "df", "dsfsf", "d"};
Sort(ch);
Sort(nums);
// Sort(str);
for(int i = 0; i < 5; i++)
{
cout << ch[i] << " ";
}
cout << endl;
for(int i = 0; i < 8; i++)
{
cout << nums[i] << " ";
}
// cout << endl;
// for(int i = 0; i < 4; i++)
// {
// cout << str[i] << " ";
// }
return 0;
}