C++ 使用 std 库查找满足条件的向量中的第一个元素

nin*_*zzo 1 c++ search vector find

我有一个包含对象的向量,每个对象都有一个返回布尔值的方法。我想找到方法返回的第一个元素true

我知道我可以简单地使用for循环遍历向量,但我正在寻找使用 std 库的解决方案

谷歌搜索我什么也没找到,只有findfind_if功能,但这不是我要找的。我正在寻找一个函数,它基本上接受向量和 lambda 的引用,并返回 lambda 为其返回 true 的第一个元素。

注:我也有兴趣在一个函数返回一个元素,而并不一定是第一。

Nat*_*ica 5

你正在寻找的是std::ranges::find_if,你会像这样使用它

auto iterator = std::ranges::find_if(vector, lambda);
Run Code Online (Sandbox Code Playgroud)

这确实需要 C++20 支持。如果你没有那个,那么使用普通的旧std::find_if

auto iterator = std::find_if(vector.begin(), vector.end(), lambda);
Run Code Online (Sandbox Code Playgroud)

  • @ninazzo 迭代器指向单个元素。要访问它,您只需使用“*iterator”,尽管在执行此操作之前您应该检查并确保迭代器不等于向量的结束迭代器。 (3认同)