我想创建一个带有接受以下任一参数的函数std::greater<int>
or std::less<int>
作为论点。不过,我仍然坚持参数的语法。
这是我尝试过的格式:
myFunction(int a, int b, bool *comp(int, int)) { … }
…
std::greater<int> bigger;
myFunction(2, 3, bigger);
但这不起作用,我怀疑第三个参数完全错误。实际上应该是什么?
无法转换std::greater<int>
to bool* (*)(int, int)
采用比较器的函数通常通过模板实现:
template <typename Comparator>
myFunction(int a, int b, Comparator comp) { … }
但你也可以使用std::function
实施它:
myFunction(int a, int b, std::function<bool (int, int)> ) { … }
第一个版本在标头中公开代码,但通常性能更好。
对于第二个版本,您可以隐藏.cpp文件中的实现,
但由于无法内联,您会损失一些性能
比较器调用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)