首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有cmath函数的Stl方法

带有cmath函数的Stl方法
EN

Stack Overflow用户
提问于 2010-08-04 08:03:37
回答 1查看 429关注 0票数 4

我正在尝试编写一个STL方法来获取向量的对数:

代码语言:javascript
复制
for_each(vec.begin(),vec.end(),log);

但我得到了

代码语言:javascript
复制
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函数编写一个简单的包装器,并用它来调用它。有没有更简单的方法来指定我想要内联的日志函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-04 08:11:06

是。您可以将函数强制转换为适当的类型:

代码语言:javascript
复制
for_each(vec.begin(),vec.end(),(double(*)(double))log);

另一种可能是创建可以接受任何类型的functor:

代码语言:javascript
复制
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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3401653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档