我试图在函数中推导出迭代器的类型,该函数已经用模板推导出了参数的类型。我想要实现的是替换关键字 auto ,它在 C ++ 11 标准中具有类似的功能。最初我有以下功能:
template<typename Type> bool activeExtension(Type &arr)
{
for (auto it=arr.begin(),
ite=arr.end();
it!=ite;
++it)
{
if (*it != 0)
return true;
}
return false;
}
这适用于 C ++ 11 标准的完美编译。但事情发生了变化,我不能再使用这些功能了。
我在没有关键字自动的情况下尝试实现相同功能。所以我想到了模板。
到目前为止,我尝试的是:
template<typename Type> bool activeExtension(Type &arr)
{
for (Type::iterator it=arr.begin(),
ite=arr.end();
it!=ite;
++it)
{
if (*it != 0)
return true;
}
return false;
}
你会如何解决这个问题?
注意: 我通常使用以下类型调用此函数,
template <class T>
struct Generic_t {
typedef std::vector<T> Array;
};
因为我必须实例化具有不同类型的向量。