函索模板的简单问题
《c++primer》第10章中的习题:
10.10 写个function template count,统计数组中某个值出现的次数。
//头文件model.h
template<class Type>
int count_swh(Type *array,Type t,int size)
{ int n=0;
for(int i=0;i<size;i++)
if(array[i]==t)
n++;
return n;
}
template<> int count_swh<string>(string *s, string &t,int size)
{ int n=0;
for(int i=0;i<size;i++)
if(strcmp(s[i],t)==0)
n++;
return n;
}
//主文件ch10.10.cpp
#include<iostream>
#include<string>
#include<cstring>
#include<stdlib.h>
using namespace std;
#include"model.h"
int main()
{ int ia[]={0,1,2,3,4,4,4,4,4,4};
double da[]={1.0,1.0,3,4,1.0,5};
char ca[]={'a','b','c','a','c','a'};
string s[]={"abc","xxm","abc","swh"};
cout<<"(ia,4,10):"<<count_swh(ia,4,10)<<endl;
cout<<"(da,1.0,6):"<<count_swh(da,1.0,6)<<endl;
cout<<"(ca,'a',strlen(ca)):"<<count_swh(ca,'a',6)<<endl;
cout<<"(s,"abc",4):"<<count_swh(s,string("abc"),4)<<endl;
system("pause");
return 0;
}
为什么在实例化string的时候会出错,jjhou书上给的答案在Devcpp中怎么无法通过编译????