Подсчитайте, сколько соседних элементов удовлетворяют предикатуC++

Программы на C++. Форум разработчиков
Anonymous
Подсчитайте, сколько соседних элементов удовлетворяют предикату

Сообщение Anonymous »

Учитывая std :: vector с именем v и предикат p , который берет два элемента и возвращает Bool , какой идиоматический способ подсчитать, сколько смежных элементов в v удовлетворяет P ? PrettyPrint-Override ">

Код: Выделить всё

auto count = 0;

for (auto index = 1UZ; index < v.size(); ++index)
{
if (p(v[index - 1], v[index]))
{
++count;
}
}
он может выглядеть красивее, используя std :: views :: pairwise из диапазонов библиотека:

Код: Выделить всё

for (const auto [left_element, right_element] : std::views::pairwise(v) | std::views::as_const)
{
if (p(left_element, right_element))
{
++count;
}
}
Но это та же самая идея ...
Мне известно о std :: addracent_find и std :: addracent_difference , но не вижу, как их использовать для этого.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -predicate

Вернуться в «C++»