定义std :: hash <std :: function>

 剡亚军_191 发布于 2023-02-09 09:27

我需要创建一个模板化的类,该类可以容纳指向类型元素的指针T,然后对它们执行功能。这些函数将来自不同的地方,因此我需要一个容器来存储它们,以便以后可以调用它们。我决定使用std::unordered_set,因为它被实现为哈希表,因此提供了速度并限制了重复。我写了一个完整的类,但是由于没有为我定义的哈希函数std::function接受类型指针T并返回而无法编译void。为我使用的每种类型使用struct hash>(并且也重载()运算符)来指定它很容易,但是实际上如何对函数进行哈希处理呢?

这是我班上的简短摘录,其中包含相关的成员和方法:

template 
class Master {
private:
    std::unordered_set> functions;
protected:
    registerFunction(std::function function) {
        this->functions.insert(function);
    }
    unregisterFunction(std::function function) {
        this->functions.erase(function);
    }
};

我并不完全愿意使用std::unordered_set,但是它似乎提供了使此代码段(以及我的代码的其余部分)正常运行所需的一切。

我在想这个错误的方式吗?散列a完全不可能std::function吗?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有