gpt4 book ai didi

c++ - 将指向函数的指针类型的函数参数设置为默认值

转载 作者:搜寻专家 更新时间:2023-10-31 01:38:39 25 4
gpt4 key购买 nike

假设我们有如下函数声明

 template<typename Function_type , typename Iterator_type>
Iterator_type sort(Iterator_type begin, Iterator_type end, Function_type f);

此函数应该模仿算法 库中包含的众多排序函数之一,因此具有可选的第三个参数。我需要在此声明中为 f 分配什么值才能避免最后一个参数合法。我最初的想法是使用 lambda 函数

 template<typename Function_type , typename Iterator_type>
Iterator_type sort(Iterator_type begin, Iterator_type end, Function_type f=[](decltype(*begin)x, decltype(*begin)y){return x>y;});

这产生了编译器告诉我 f 不能用作函数的结果。

在我的第二次尝试中,我声明了另一个泛型函数

 template< typename Type>
bool Comparison(Type x, Type y)
{
return y>x;
}
template<typename Function_type , typename Iterator_type>
Iterator_type sort(Iterator_type begin, Iterator_type end, Function_type f=Comparison);

不过,我还是没有成功。执行此操作的正确方法是什么?

最佳答案

不要分配默认值。只需添加一个重载:

template <typename Iter>
Iter Max_el(Iter begin, Iter end) {
using T = std::remove_reference_t<decltype(*begin)>;
return Max_el(begin, end, std::greater<T>{});
}

关于c++ - 将指向函数的指针类型的函数参数设置为默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32511610/

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