gpt4 book ai didi

c++ - 在 std::vector 中找到满足条件的最后一个元素

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:25 24 4
gpt4 key购买 nike

我需要找到 vector 中小于某个值的最后一个元素。

像 find_first_of 但我想要 last 而不是 first。搜索了一下发现没有find_last_of但是有find_first_of。

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

最佳答案

使用reverse iterators ,像这样:

#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';
}

Live demo .

对于 C++20 范围,这将变成

int main()
{
std::vector<int> v{1,2,42,42,63};
auto result = std::ranges::find_if(v | std::views::reverse,
[](int i) { return i == 42; });

std::cout << std::distance(result, v.rend()) << '\n';
}

Live demo .

关于c++ - 在 std::vector 中找到满足条件的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39165432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com