【发布时间】:2009-09-04 12:13:49
【问题描述】:
这似乎是一个学术问题,但我仍然会对答案非常感兴趣:
我有一个字符串向量s,我想在其中找到给定的字符串findme。这可以使用类似的东西来完成
find(s.begin(), s.end(), findme);
我的问题是:一定有一种方法可以使用 STL 字符串的 find_if 和 compare 方法作为谓词,但是如何做呢?类似的东西
find_if(s.begin(), s.end(), bind2nd(mem_fun_ref(&string::compare), string("findme")) );
不起作用,因为 compare 方法有几个重载,编译器不知道选择哪一个。
作为第二步:我使用 find_if 而不是 find 的动机是,我有一个从具有字符串属性 name 的类派生的对象向量,并且我想查找具有给定名称的对象。这可能吗(无需编写额外的函数用作谓词)?
编辑:正如使用 Boost 提到的一些(大多数:) 答案——我不希望为此包含 Boost。 (据我所知,大多数 Boost 库都是“唯一”模板,所以应该有不使用 Boost 的方法。)
【问题讨论】:
-
不是您正在寻找的答案,但对我来说,这就是我划清界限的地方。如果很难设置绑定方案,那么当它不完全符合您的预期时,通常很难对其进行调试。说了这么多,你有没有考虑过 boost::bind 和 boost::lambda?