我正在尝试编写一个STL方法来获取向量的对数:
for_each(vec.begin(),vec.end(),log);但我得到了
no matching function for call to ‘for_each(__gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, __gnu_cxx::__normal_iterator<double*, std::vector<double, std::allocator<double> > >, <unresolved overloaded function type>)’我认为这是由于log函数的多个版本造成的。显然,我可以围绕log函数编写一个简单的包装器,并用它来调用它。有没有更简单的方法来指定我想要内联的日志函数?
发布于 2010-08-04 08:11:06
是。您可以将函数强制转换为适当的类型:
for_each(vec.begin(),vec.end(),(double(*)(double))log);另一种可能是创建可以接受任何类型的functor:
struct log_f
{
template <class T> T operator()(const T& t) const { return log(t); }
};
for_each(vec.begin(),vec.end(), log_f());而且,正如比利·奥尼尔指出的那样,你想要的是transform而不是for_each。
https://stackoverflow.com/questions/3401653
复制相似问题