加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C中如何使用模板函数作为std :: for_each中的第3个参数?

发布时间:2020-12-16 10:54:00 所属栏目:百科 来源:网络整理
导读:我正在尝试使用std :: for_each来输出向量的内容,这些向量可能包含不同的类型.所以我写了一个通用输出函数,如下所示: templatetypename T void output(const T val){ cout val endl;} 我想用它: std::for_each(vec_out.begin(),vec_out.end(),output); 但
我正在尝试使用std :: for_each来输出向量的内容,这些向量可能包含不同的类型.所以我写了一个通用输出函数,如下所示:

template<typename T> void output(const T& val)
{
    cout << val << endl;
}

我想用它:

std::for_each(vec_out.begin(),vec_out.end(),output);

但是编译器在for_each语句中抱怨“无法推断出模板参数”.还抱怨“函数模板不能成为另一个函数模板的参数”.

这不可能吗?我原以为编译器会知道vec_o??ut的类型(它的向量),所以应该实例化函数“output(const double& val)”?

如果这不起作用,如何在不编写手动循环的情况下获得类似的STL功能?

我对C很新,还在学习绳索:-)

解决方法

尝试:

std::for_each(vec_out.begin(),output<T>);

其中vec_o??ut是类型为T的容器(向量).

注意:for_each算法需要一个一元仿函数用于其最后一个参数.有关使用仿函数的示例,请参阅链接.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读