【发布时间】:2015-10-28 12:49:03
【问题描述】:
我想创建一个查找函数,该函数根据给定的 lambda 表达式工作并匹配给定的字符(会有所不同)。 我尝试使用 lambda 表达式,但 lambda 表达式中的匹配是使用常量字符。我不能随心所欲地改变 lambda 表达式。
我有一个vector < pair <char, char> > r。
我想做的是,
遍历这个向量,看看是否有任何r[i].second 与我给定的字符匹配。在这里,给定的字符是字符串的一部分,因此随着迭代而变化,所以我无法在 lambda 表达式中修复它,我也不能将参数传递给 lambda 表达式来解决这个问题。
bool findfn (pair <char, char> x)
{
return x.second == mychar // I want to pass mychar as argument
}
一种可能性是使用 lambda 表达式,这在 vincentp 的回答中进行了解释。我们也可以使用上面显示的findfn 吗?调用代码如下所示:
find(r.begin(), r.end(), findfn)
【问题讨论】:
-
等等你不能改变 lambda?为什么不?请至少使用伪代码演示您要执行的操作。
-
在发布这个问题之前,我不知道我们可以使用 lambda 的各种方式。 ([]中的论点)
-
你不能用 find_if 代替 find 吗?如果你这样做,效果很好。
-
在使用
find_if的时候不用担心比较功能中mychar的范围吗?
标签: c++ string algorithm lambda