Как мне преобразовать вектор в новый вектор, используя range-v3?

Я пришел из мира C #, где я могу написать что-то вроде:

var newList = oldList.Select(x => x * 2).Where(x => x > 3).ToList();

Это позволяет мне взять список, каким-то образом преобразовать его и сохранить результат в новом списке.

Я хотел бы сделать то же самое в C ++, используя . Я понимаю, как работают преобразования, но делает обеспечить аналогичные «приемные» методы для вычисления и сбора результатов?

Я ищу что-то вроде toVector, который будет вычислять результирующий диапазон в только что выделенный std::vector,

3

Решение

Вы можете сделать:

std::vector<int> v2 = v
| ranges::view::transform([](int x) { return x * 2; })
| ranges::view::filter([](int x) { return x > 3; });

демонстрация

Или, если вы предпочитаете auto налево:

auto v2 = v
| ranges::view::transform([](int x) { return x * 2; })
| ranges::view::filter([](int x) { return x > 3; })
| ranges::to_vector;
7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]