在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的容器(向量). 注意: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |