гряда из C# мира, где я могу написать что-то вроде:Как преобразовать вектор в новый вектор с помощью range-v3?
var newList = oldList.Select(x => x * 2).Where(x => x > 3).ToList();
Это позволяет мне взять список, превратить его в некотором роде, и сохранить результат в новом списке.
Я хотел бы сделать то же самое в C++, используя range-v3. Я понимаю, как работают преобразования, но делает range-v3 аналогичными методами «стоков» для вычисления и сбора результатов?
Я искал что-то вроде toVector
, которое вычислило бы полученный диапазон в только что выделенном std::vector
.
Вы можете построить 'зЬй :: VECTOR' из' диапазона '. – Jarod42
@ Jarod42 Можете ли вы привести пример? Эквивалент моему фрагменту C# выше был бы идеальным. – sdgfsdh
Используя стандартную библиотеку, вы можете сделать: std :: for_each (oldList.begin(), oldList.end(), [& newList] (auto & val) {if (val> 3) newList.push_back (val * 2);}); 'Но вам нужно будет создать переменную' newList' перед вызовом. [demo] (http://coliru.stacked-crooked.com/a/4eace3968a9d84b0) – wally