【发布时间】:2019-09-23 09:37:56
【问题描述】:
template<typename T,int nSize>
T Sum(T (&parr)[nSize])
{
T sum=0;
for(int i = 0; i < nSize ;++i)
{
sum += parr[i];
}
return sum;
}
int _tmain(int argc, _TCHAR* argv[])
{
int nArr[] = {1,2,3,4};
int nSum = Sum(nArr);
std::cout<<"Sum :"<<nSum;
}
可以使用std::vector 代替array。或者array 可以用任何stl 容器代替吗?
【问题讨论】:
-
没有。采用两个模板化迭代器而不是一个数组,您的函数几乎可以与任何容器一起使用。
-
如何使用两个模板化迭代器来完成。您能详细说明一下吗?
-
@MohammedAliJahfer,为你的函数使用一个范围。 T 类型的一个模板参数和输入迭代器的另一个模板参数
-
@kuro 所以我们不能使用非类型模板参数来完成。对吧?
标签: c++ c++11 templates containers c++-standard-library