gpt4 book ai didi

c++ - 使用 std::greater 或 std::less 作为参数的参数

转载 作者:IT老高 更新时间:2023-10-28 21:40:52 27 4
gpt4 key购买 nike

我想创建一个函数,其参数接受 std::greater<int>std::less<int>作为论据。不过,我坚持使用参数的语法。

这是我尝试过的格式:

myFunction(int a, int b, bool *comp(int, int)) { … }

std::greater<int> bigger;
myFunction(2, 3, bigger);

但这不起作用,我怀疑第三个参数完全错误。它实际上应该是什么?

cannot convert 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)> ) { … }

第一个版本在 header 中公开代码,但通常会执行得更好。至于第二个版本,可以将实现隐藏在.cpp文件中,但是由于无法内联,您会失去一些性能比较器调用。

关于c++ - 使用 std::greater 或 std::less 作为参数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702435/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com