gpt4 book ai didi

algorithm - 如何在 C++ 中将函数作为参数传递给类构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:53:23 27 4
gpt4 key购买 nike

我正在尝试实现一个有序的多 map 。但我需要提供一个函数来比较多图包含的内容。

例如:

bool compare(string a, string b) { return a<b; }
bool compare2(string a, string b) { return a.size()<b.size(); }


class MultiMap
{
private:
toCompare( string a, string b);

public:
MultiMap(function) { toCompare = function };


}

所以我想通过给定的函数设置多图中的顺序。

有没有办法,也许是一些指向函数的指针。希望你明白我想做什么,如果不明白,请随时提问。

另外,请注意这不是真正的代码,只是我为了提供一个想法而写的。

最佳答案

最简单的方法是使用std::function,例如:

class MultiMap
{
private:
std::function<bool(string,string)> toCompare;

public:
MultiMap(std::function<bool(string,string)> function) : toCompare(std::move(function)) {}

bool compare(string a, string b) {
return toCompare(a,b);
}

};

int main(int argc, char** argv) {
MultiMap mm(compare);
mm.compare("asd", "Da");
}

或者用函数指针:

// Define function type
using compare_func = bool(string,string);

class MultiMap
{
private:
compare_func* toCompare;
public:
// Constructor accepts pointer to functiontype
MultiMap(compare_func* function) : toCompare(function) { }

bool compare(string a, string b) {
return toCompare(a,b);
}

};

int main(int argc, char** argv) {
MultiMap mm(compare);
mm.compare("asd", "Da");
}

关于algorithm - 如何在 C++ 中将函数作为参数传递给类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44374084/

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