Алгоритм — c ++: использовать преобразованный диапазон увеличения с двоичной функцией

Предположим, у меня есть два std :: vectors x и y и двоичная функция F. Я хотел бы создать новый объект z (не обязательно вектор) со свойством, что i-й элемент z будет приложением F к i-е элементы х и у. Пока пользуюсь

boost::range::transform(x, y, z.begin(), F)

что, конечно, требует выделения памяти для z. Моя цель, однако, состоит в том, чтобы избежать такого выделения памяти и оценить ленивое преобразование, аналогично тому, что boost :: adapters :: transformed делает с унарными функциями. Другими словами, тип z будет некоторым типом boost :: range. Есть ли простой способ сделать это, или я должен был бы написать свой собственный класс диапазона? Заранее спасибо!

1

Решение

Проблема в том, что Boost.Range не обеспечивает zip_range это может застегнуть x а также y как вход для вашего transform, Так что вам нужно написать один, например, с помощью make_iterator_range а также zip_iterator (из библиотеки Boost.Iterator). Смотрите, например этот ответ для примера кода.

0

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

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

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