tmlate function中使用数组

0 views
Skip to first unread message

邱戈川

unread,
Mar 10, 2006, 12:36:30 AM3/10/06
to 基于ACE和SpiderMonkey的SMS虚拟运营系统
template <class Type, int size>
Type min( Type (&r_array) [size] )
{
Type min_val = r_array[0];
for ( int i = 1; i < size; ++i )
if ( r_array[i] < min_val )
min_val = r_array[i];
return min_val;
}

Type为数组的类型,size为数组的大小

用法:
int iArray[10] = {1,2,3,4,5,6,8};
min(iArray);

注意:1.要用&,这个有点像函数指针
2.
这里一定要用数组,不可以指针。因为template是强类型
如:
int *piArray2 = new int[10];
for(int i=0; i<10; i++)
{
piArray2[i] = i;
}

int vm = min2(piArray2); //错误

3.现在VC6并支持这种template function,需要vc7

时代过客

unread,
Mar 12, 2006, 9:30:39 PM3/12/06
to 基于ACE和SpiderMonkey的SMS虚拟运营系统
Type (&r_array) [size] //
这个写法是要求传入的实参必须为size个元素的Type类型的数组入口,注意这里不能为普通指针,只能为指定大小的数组入口,否则编译将不通过,也是说,如果想传递一个固定大小的数组,而不想像(type*
p,int size)这样危险和费事传递的话,就使用上述传递吧
Reply all
Reply to author
Forward
0 new messages