[问题] Template of Template?

楼主: RouterHsieh (醉卧美人膝,醒掌天下权)   2015-01-04 12:24:10
在下今天正在练习template和function overloading的时候遇到一个问题,
(其实是Essential C++这本书的习题2.6延伸的)
假设我现在有两个以下的template:
template <typename Type>
Type my_max(vector<Type> &tvec)
{
Type max = tvec[0];
for (int i = 1; i < tvec.size(); i++) {
if (tvec[i] > max)
max = tvec[i];
}
return max;
}
template <typename Type>
Type my_max(Type *tarr, int size)
{
Type max = tarr[0];
for (int i = 1; i < size; i++) {
if (tarr[i] > max)
max = tarr[i];
}
return max;
}
基本上我的my_max函式要做的很简单,就是要能够从vector/array当中,
把值最大的挑出来然后回传。
当然vector/array的差别在于前者知道自己的size,但后者不知道。
所以当这个函式(my_max)用在array上的时候必须多传入一个size的参数才行。
(因此在这里可以用function overloading来解决)
我在想的是,既然上面两个template function长的其实很像的情况下,
有可能再进一步的把上面这两个template function化简成单一的template吗@@
(还是说其实这种状况原本就是要用function overloading来解决?)
在下才刚开始学C++而已,所以可能问了个蠢问题,还请大家不吝指正,感谢~~
作者: PkmX (阿猫)   2015-01-04 12:30:00
iterator
作者: cjcat2266 (CJ Cat)   2015-01-05 03:25:00
第一个版本去呼叫第二个版本my_max(&tvec[0], tvec.size())
作者: ibmibmibm (BestSteve)   2015-01-06 20:55:00
作者: Killercat (杀人猫™)   2015-01-07 01:48:00
其实严格讲起来这不叫做template of template XD真正的template of template大概是长这样template <template <typename> class T> class foo
作者: a27417332 (等号卡比)   2015-01-07 11:47:00
看到template template parameter嘞
作者: Killercat (杀人猫™)   2015-01-07 15:23:00
这东西写起来 没几个人会维护的.... 很麻烦

Links booklink

Contact Us: admin [ a t ] ucptt.com