Ответ 1
Вы можете использовать std::transform
и std::plus<int>()
std::vector<int> a;//looks like this: 2,0,1,5,0
std::vector<int> b;//looks like this: 0,0,1,3,5
// std::plus adds together its two arguments:
std::transform (a.begin(), a.end(), b.begin(), a.begin(), std::plus<int>());
// a = 2,0,2,8,5
Эта форма std::transform
принимает 5 аргументов:
- Два первых являются входными итераторами в начальное и конечное положения первой последовательности.
- Третий - входной итератор в исходное положение второго диапазона.
- Четвертый - это выходной итератор исходного положения диапазона, в котором хранятся результаты операции.
- Последний аргумент - это двоичная функция, которая принимает два элемента в качестве аргумента (одна из каждой из двух последовательностей) и возвращает некоторое значение результата, конвертируемое в тип, обозначенный OutputIterator.