gpt4 book ai didi

c++ - c++ typedef std::function<> 如何使用?

转载 作者:可可西里 更新时间:2023-11-01 15:05:33 24 4
gpt4 key购买 nike

你好,我正在做这个项目,在头文件中定义了以下内容

typedef std::function<unsigned int(const std::string&)> HashFunction;

我如何将它与我的 HashFunction 一起使用?当我尝试

HashFunction myHashFunction;
myHashFunction("mystring");

程序崩溃。

最佳答案

std::function<Signature> 类型的对象行为非常像一个函数指针,指向一个带有签名 Signature 的函数.默认构造 std::function<Signature>只是还没有指向任何函数。 std::function<Signature> 之间的主要区别和一个函数指针 Signature*是你可以在 std::function<Signature> 中以函数对象的形式拥有一些状态.

要使用这种类型的对象,您需要使用合适的函数对其进行初始化,例如

#include <functional>
typedef std::function<unsigned int(const std::string&)> HashFunction;

struct Hash {
unsigned int operator()(std::string const& s) const {
return 0; // this is a pretty bad hash! a better implementation goes here
}
};

int main() {
HashFunction hash{ Hash() };
hash("hello");
}

关于c++ - c++ typedef std::function<> 如何使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20013566/

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