О std::views::take_ whileC++

Программы на C++. Форум разработчиков
Anonymous
О std::views::take_ while

Сообщение Anonymous »

Рассмотрим код:
std::vector a{3, 7, 8, 1, - 2, 4 };
auto view = a | std::views::take_while([](auto elem) {return elem > 0; });

Существуют ли какие-либо стандартные средства для получения итератора (или позиции), соответствующего элементу вектора a, следующему за последним элементом, входящим в представление, или это можно сделать только с помощью трюки с лямбдой:
std::vector a{ 3, 7, 8, 11, -2, 4 };
auto it{ a.begin() };
auto lambda = [&it](auto elem)
{
bool result = (elem > 0);
if (result) ++it;
return result;
};
auto view = a | std::views::take_while(lambda);


Подробнее здесь: https://stackoverflow.com/questions/785 ... take-while

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