gpt4 book ai didi

c++ - 交替使用函数和仿函数 - C++

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

通过 copy_ifcount_if 等算法,我可以在需要谓词的地方交替使用函数或仿函数。

但是对于 std::set,我无法传递一个函数来代替它采用的比较函数参数。在这种情况下,我必须传递一个仿函数。为什么它不接受函数?

bool myfunction (int lhs, int rhs) {
cout << "myfunction\n";
return true;
}

struct myfunctor {
bool operator() (const int& lhs, const int& rhs) const {
cout << "myfunctor\n";
return true;
}
};

std::set<int,myfunctor> first;
std::set<int,myfunction> second; // this does not compile.

最佳答案

Why doesn't it accept a function?

那是因为 std::set 第二个模板参数应该是一个类型。具体来说,它应该是比较的仿函数类型。您正在传递一个不是类型的函数(指针)。

关于c++ - 交替使用函数和仿函数 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655200/

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