где она принимает итераторы на 2 ренжа, но без выходного итератора
Напиши тупо цикл...
а чем transform-то не подходит? Что-то не совсем понятно, что хочется (
Называется "zip", в стандартных плюсах нет Есть в ranges v3, можно написать свой в 200 строк
for (auto it1 = std::begin(arr1), it2 = std::begin(arr2); it1 != arr1 && it2 != arr2; ++it1, ++it2) {}
dot произведение векторов, к примеру. for (std::size_t i = 0; i < N; ++i){ result += v1.m_values[i] * v2.m_values[i]; } типа такого, только без цикла
Вот, уже ошибку допустил
Лучше уж циклом :)
да уж, для этого задумывался std::views::zip, но увы, только с C++23
for (auto [x, y] : zip(v1.m_values, v2.m_values)) { result += x * y; }
и стоит ли напрягаться и писать 200 строк ради этих трех?
можно самостоятельно реализовать по спецификации, а при переходе на новый стандарт просто заменить своё на std
А там с 20 стд итераторы сильно упростились?
Ну вообще тут можно и ногу прострелить если в зип передавать временные объекты
сам я, кстати, не пробовал. С дивана советовать - не рейнджи имплементить :)
Ну рейнджи вроде сложно расширяются самостоятельно
Обсуждают сегодня