猿问

把指针传给模板函数,让函数获得数组长度

我写了一个模板的快速排序 用一个指针做参数 template<class T> void Qsort(T p[],int L,int R) {//这里想让函数自己获得数组长度 R=sizeof(p)/sizeof(T); ………… } 但是传过来的p的长度是8,p是个含10个int数组 p的长度应该是40
爆炸的游戏手柄
浏览 1210回答 1
1回答

onemoo

函数(包括函数模板)的参数是数组类型的,其会被视为指针类型(这里其实是参数自动转型)。 所以这里的 T p[] 相当于 T *p,p 都不算是数组,当然无法实现你的想法了。这里你可以将 p 声明为引用类型:T &p,这时 p 会被视为数组引用类型,T 才会被推导为数组引用类型。
随时随地看视频慕课网APP
我要回答