我想找到满足给定条件的数组的最后一个元素。作为回报,我想:
一般来说,我试图解决的是:(i)在向量(max_element)中找到最大元素,(ii)在最大元素之前找到0的第一次出现。
因此,在以下示例中:
{0, 10, 20, 0, 5, 50, 0, 70, 10, 0}
// Get max at position 7, return 0 at position 6在使用了来自算法头的max_element之后,我尝试了下面的代码片段,使用反向迭代器。
auto Itr1 = std::max_element(vect.begin(), vect.end());
auto Itr2 = std::find(Itr1, vect.rend(), [](int i){return i == 0;});将反向迭代器和前向迭代器混合使用并不有趣,也不起作用。似乎应该有一个更优雅的解决方案。
发布于 2019-10-20 04:20:30
但是,这并不是很优雅,它需要另一个只包含0的向量:
std::vector<int> v1 { 0, 10, 20, 0, 5, 50, 0, 70, 10, 0 };
std::vector<int> v2 { 0 };
auto Itr1 = std::max_element(v1.begin(), v1.end());
auto Itr2 = std::find_end(v1.begin(), Itr1, v2.begin(), v2.end());https://stackoverflow.com/questions/58469796
复制相似问题