Aks*_*hur 0 c++ stl vector stl-algorithm c++11
我有这个要求来找到向量中小于值的最后一个元素。
像find_first_of一样,但我要的不是最后一个。我搜索发现没有find_last_of,但是有find_first_of。
为什么?标准方法是将find_first_of与反向迭代器一起使用吗?
使用反向迭代器,如下所示:
#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)
现场演示。
这是使用反向迭代器完成的方式:
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)
| 归档时间: |
|
| 查看次数: |
6549 次 |
| 最近记录: |