【发布时间】:2015-12-20 09:03:03
【问题描述】:
我举以下例子来说明我的问题:
template<typename T>
void write_numerical_array(const std::vector<T> &nArray)
{
typename std::vector<T>::const_iterator it = nArray.begin();
while(it!=nArray.end())
{
std::cout<<*it<<std::endl;
it++;
}
}
int main(int,char*[])
{
std::vector<int> nArray;
for(int i=0; i<10; i++)
nArray.push_back(i);
write_numerical_array ( nArray);
return 0;
}
在上面的代码中,函数可以处理C++容器。我想知道我是否可以编写一个更通用的函数来同时处理简单的变量。例如:
int main(int,char*[])
{
float value =100;
write_numerical_array(value);
return 0;
}
我试图用这个函数来做,但是失败了:
template<typename T>
void write_numerical_array(T &nArray)
{
typename T::const_iterator it = nArray.begin();
while(it!=nArray.end())
{
std::cout<<*it<<std::endl;
it++;
}
}
【问题讨论】:
-
您也许可以使用自定义类型特征,如 the one shown in this old answer 与
std::enable_if结合使用,以便编译器选择迭代集合的函数,或仅打印值的另一个函数。
标签: c++