检查两个 std::function 是不是相等

Posted

技术标签:

【中文标题】检查两个 std::function 是不是相等【英文标题】:Check if two std::function are Equal检查两个 std::function 是否相等 【发布时间】:2012-10-10 23:34:57 【问题描述】:

如果我有两个std::functions,如何检查两者是否具有相同的功能?

附加信息:我有一个函数向量 std::vector<std::function<void()>>,在向向量添加另一个函数之前,我想检查它是否已经包含在内。

【问题讨论】:

Lambda 可以完全等价,但由于它们没有 == 运算符,因此您无法比较它们。你最好使用 unique_ptr 使用 unique_ptr 如何处理函数? 这似乎与以下内容重复:***.com/questions/3629835/… 【参考方案1】:

我不认为他们可以比较。这是一个example 来解释关于 std::function 比较的一些要点

【讨论】:

【参考方案2】:

一般std::functionboost::function 是不可比较的,因为它们需要它们存储的对象是可比较的,但不是所有的函数对象和lambda 都有operator== 所以stdboost 函数无法比较它们

【讨论】:

以上是关于检查两个 std::function 是不是相等的主要内容,如果未能解决你的问题,请参考以下文章

检查两个“选择”是不是相等

PHP - 检查两个数组是不是相等

检查两个无序列表是不是相等[重复]

如何检查 Lua 中的两个值是不是原始相等?

检查两个 Python 函数是不是相等

检查python中两个元组是不是相等的时间复杂度