【发布时间】:2020-07-17 15:33:17
【问题描述】:
我有一个包含对象的向量,每个对象都有一个返回布尔值的方法。
我想找到方法返回true的第一个元素。
我知道我可以简单地使用 for 循环遍历向量,但是我正在寻找使用 std 库的解决方案。
谷歌搜索我什么也没找到,只有 find 和 find_if 函数,但这不是我要找的。我正在寻找一个基本上引用向量和 lambda 并返回 lambda 返回 true 的第一个元素的函数。
注意:我也对返回一个元素的函数感兴趣,不一定是第一个。
【问题讨论】:
-
听起来很像
find_if。 -
算法是根据迭代器定义的,因为这将操作与容器的遍历分离。如果你通过
vec.begin()和vec.end()你得到第一个匹配的元素,如果你通过vec.rbegin()和vec.rend()你得到最后一个匹配的元素。如果您想编写一个跳过所有其他元素的自定义迭代器,您可以编写它并仍然使用相同的find_if。