在满足条件的std :: vector中查找最后一个元素

Aks*_*hur 0 c++ stl vector stl-algorithm c++11

我有这个要求来找到向量中小于值的最后一个元素。

像find_first_of一样,但我要的不是最后一个。我搜索发现没有find_last_of,但是有find_first_of。

为什么?标准方法是将find_first_of与反向迭代器一起使用吗?

rub*_*nvb 6

使用反向迭代器,如下所示:

#include <iostream>
#include <vector>

int main()
{
  std::vector<int> v{1,2,42,42,63};
  auto result = std::find_if(v.rbegin(), v.rend(),
                             [](int i) { return i == 42; });

  std::cout << std::distance(result, v.rend()) << '\n';
}
Run Code Online (Sandbox Code Playgroud)

现场演示


Sme*_*eey 5

这是使用反向迭代器完成的方式:

std::vector<int> vec = {2,3,10,5,7,11,3,6};  

//below outputs '3':
std::cout << *(std::find_if(vec.rbegin(), vec.rend(), [](int i) { return i < 4; })); 
Run Code Online (Sandbox Code Playgroud)