使用 Functor / Predicate 在 vector 中查找小于其前身的第一个元素
Use Functor / Predicate to find the first element smaller than its predecessor in vector
目前我正在尝试使用函数对象来查找第一个小于向量中前一个元素的元素。
例如我有向量v
,它的内容是{ 25, 30, 10, 40};
我试着玩弄函子和算法库,但我得不到正确的结果。
我的尝试是:
auto target = find_if( v.begin( ), v.end( ), &greaterneighbour );
if ( target != v.end( ) )
cout << target << endl;
然而,我尝试实现的仿函数不正确,并且只适用于预设元素(比如将每个元素与 4 进行比较)。
我的问题是如何使用仿函数来比较向量的两个元素。
您可以使用 std::adjacent_find()
。
auto iter = std::adjacent_find(begin(v), end(v), [](const auto& a, const auto& b) { return a < b; });
目前我正在尝试使用函数对象来查找第一个小于向量中前一个元素的元素。
例如我有向量v
,它的内容是{ 25, 30, 10, 40};
我试着玩弄函子和算法库,但我得不到正确的结果。
我的尝试是:
auto target = find_if( v.begin( ), v.end( ), &greaterneighbour );
if ( target != v.end( ) )
cout << target << endl;
然而,我尝试实现的仿函数不正确,并且只适用于预设元素(比如将每个元素与 4 进行比较)。 我的问题是如何使用仿函数来比较向量的两个元素。
您可以使用 std::adjacent_find()
。
auto iter = std::adjacent_find(begin(v), end(v), [](const auto& a, const auto& b) { return a < b; });