所以假设我有一系列自定义比较器,如下所示:
input
我有这样的功能:
for x in range(0, 11):
dataList.append(int(input("Enter a data value")))
rect(210, 499, 50, (dataList))
我应该在compare_values函数中使用什么语法,以便它可以接受上述比较器中的任何一个并在其实现中使用它?目前,我的函数的比较器参数是以与上面类似的方式编写的,而Xcode正在抛出错误。我曾经尝试过搞乱这些争论,看看是否有什么可行,但我想我需要更好地理解我在这里要做的事情。任何帮助将不胜感激!
答案 0 :(得分:7)
您只想将其作为模板:
template <typename T, typename F>
bool compare_values(T const& obj, T const& value, F comparator) {
return comparator(obj, value);
}
bool equal = compare_values(1, 1, less_class<int>{});
虽然您的所有operator()
目前都是private
,但这并不是特别有用。此外,您将按值取所有参数,您应该通过引用const来获取它们以避免不必要的副本。
此外,这些已经存在为std::less
,std::greater
和std::equal_to
。