использование std :: transform для добавления элементов одного диапазона в другой на месте - PullRequest
0 голосов
/ 13 июля 2020

в c ++, если бы у вас был следующий код для добавления элементов из двух диапазонов (числа1 и числа2), как бы вы изменили его, чтобы результаты сохранялись в числах2, а не в результатах?

vector<int> numbers1 = {1, 5, 42, 7, 8};
vector<int> numbers2 = {10, 7, 4, 2, 2};
vector<int> results;
std::transform(numbers1.begin(), numbers1.end(),
               numbers2.begin(),
               std::back_inserter(results),
               [](int i, int j) {return i+j;});

1 Ответ

1 голос
/ 13 июля 2020

Просто сделайте 3-м аргументом begin диапазона вывода:

std::transform(numbers1.begin(), numbers1.end(),
               numbers2.begin(),
               numbers2.begin(),  // output range
               [](int i, int j) {return i+j;});

Требования к диапазону вывода состоят в том, что он должен быть таким же большим, как и диапазон 1-го ввода, или numbers1 в данном случае.

...