Замена цикла на стандартный алгоритм

198
05 ноября 2021, 05:30

Можно ли заменить следующий цикл на какой-то стандартный алгоритм библиотеки?

for (auto iterator = a.begin() + x; iterator != a.end() - y; ++iterator) {
    *(iterator + y) = f(*iterator, *(iterator + y));
}
Answer 1

Навскидку

std::transform(a.begin() + x, a.end() - y, a.begin() + x + y, a.begin() + x + y, f);

Однако std::transform, насколько я помню, не гарантирует порядка обработки элементов. Так как такая операция потенциально может модифицировать входной диапазон, непредсказуемый порядок обработки может привести к непредсказуемым результатам. То есть проблема возникает если диапазон [a.begin() + x, a.end() - y) перекрывается с диапазоном [a.begin() + x + y, a.end()).

READ ALSO
Input email неправильно проходит проверку JS Jquery

Input email неправильно проходит проверку JS Jquery

Написал проверку для input-ов на наличие хотя бы 1-ого символа для того чтобы удалить атрибут disabled с кнопки отправкиВ условии так же указал если...

206
метод sort() в JS

метод sort() в JS

Почему на консоль выводится

100
Mожете помочь конвертировать этот js код в pascal

Mожете помочь конвертировать этот js код в pascal

Вы не указали диалект паскаля! Вот решения для паскаля из стандарта ISO 7185:

347
NodeJS - Поиск файла циклом

NodeJS - Поиск файла циклом

Возникла проблема, которой в других языках просто не существует, либо я попросту не умею гуглить (да и знания js практически нулевые)Ближе...

186