【发布时间】:2010-10-13 12:02:11
【问题描述】:
我如何搜索一个 std::unordered_set 知道哈希值并有一些谓词对象? (由pred(x) && pred(y)确定等价的谓词意思是x == y。)
【问题讨论】:
-
pred(x) && pred(y) 等价于 x == y。这意味着最多存在一个 pred(x) 持有的不同对象 :) 也许你有错字?
-
不,这意味着最多存在一个给定类型的对象,并且谓词对它是正确的:)。伙计们,我们找到了单例的数学方程:D
-
这不是意味着只要 2 个对象满足谓词,它们就相等(由运算符
==定义)?在 C++ 中阅读==而不是在数学中阅读(尽管==是等效关系顺便说一句)。 -
@Armen Tsirunyan:首先 - 这是基本原则,尽管它不是必需的(参见 std::string - 可以有 2 个相等的对象 [如
==] 但占用内存中有2个不同的空间)。第二 - 不,它没有。 -
@Armen:考虑
struct MyPred { string s; bool MyPred(string s) : s(s) {} bool operator()(string t) { return s == t; }}; MyPred pred(y);。那么pred是一个谓词(检查),其属性pred(x) && pred(y)等价于x == y(检查)。就形式逻辑而言,没有人说y在pred中不是免费的:-)
标签: c++ boost c++11 unordered-set