170 похожих чатов

Как проитерироваться по двум std::array одновремеенно? Нужно что-то типа функции std::transform,

где она принимает итераторы на 2 ренжа, но без выходного итератора

18 ответов

18 просмотров

Напиши тупо цикл...

а чем transform-то не подходит? Что-то не совсем понятно, что хочется (

Называется "zip", в стандартных плюсах нет Есть в ranges v3, можно написать свой в 200 строк

for (auto it1 = std::begin(arr1), it2 = std::begin(arr2); it1 != arr1 && it2 != arr2; ++it1, ++it2) {}

Egor-Kulebyakin Автор вопроса
Anton Semenov
а чем transform-то не подходит? Что-то не совсем ...

dot произведение векторов, к примеру. for (std::size_t i = 0; i < N; ++i){ result += v1.m_values[i] * v2.m_values[i]; } типа такого, только без цикла

Egor Kulebyakin
dot произведение векторов, к примеру. for (std::si...

да уж, для этого задумывался std::views::zip, но увы, только с C++23

Egor Kulebyakin
Лучше уж циклом :)

for (auto [x, y] : zip(v1.m_values, v2.m_values)) { result += x * y; }

Egor-Kulebyakin Автор вопроса
Sergey Skvortsov
for (auto [x, y] : zip(v1.m_values, v2.m_values)) ...

и стоит ли напрягаться и писать 200 строк ради этих трех?

Egor Kulebyakin
ну, буду ждать

можно самостоятельно реализовать по спецификации, а при переходе на новый стандарт просто заменить своё на std

Anton Semenov
можно самостоятельно реализовать по спецификации, ...

А там с 20 стд итераторы сильно упростились?

Sergey Skvortsov
for (auto [x, y] : zip(v1.m_values, v2.m_values)) ...

Ну вообще тут можно и ногу прострелить если в зип передавать временные объекты

Слава
А там с 20 стд итераторы сильно упростились?

сам я, кстати, не пробовал. С дивана советовать - не рейнджи имплементить :)

Anton Semenov
сам я, кстати, не пробовал. С дивана советовать - ...

Ну рейнджи вроде сложно расширяются самостоятельно

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта