Кажется, вы имеете в виду стандартный алгоритм std::transform
.
Если вы хотите хранить продукты соответствующих элементов двух векторов в некотором третьем векторе, то вы можете написать как
#include <algorithm>
#include <iterator>
#include <vector>
#include <functional>
//,,,
std::vector<int> v1 = { /*...*/ };
std::vector<int> v2 = { /*...*/ };
std::vector<int> v3;
v3.reserve(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(),
std::back_inserter(v3),
std::multiplies<>());
Или более полный пример
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <functional>
int main()
{
std::vector<int> v1 = { 1, 2, 3 };
std::vector<int> v2 = { 3, 2, 1 };
std::vector<int> v3;
v3.reserve(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(),
std::back_inserter(v3),
std::multiplies<>());
for (int x : v3) std::cout << x << ' ';
std::cout << std::endl;
}
Выход программы
3 4 3
Возможно, было бы лучше использовать тип long long int
f или продуктов в приведенном выше примере
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <functional>
int main()
{
std::vector<int> v1 = { 1, 2, 3 };
std::vector<int> v2 = { 3, 2, 1 };
std::vector<long long int> v3;
v3.reserve(v1.size());
std::transform(v1.begin(), v1.end(), v2.begin(),
std::back_inserter(v3),
std::multiplies<long long int>());
for (int x : v3) std::cout << x << ' ';
std::cout << std::endl;
}
Как трансформация делает это (поэтапно)? –
@TheQuantumPhysicist Разве вы не видите дубликат? – juanchopanza
@ The Quantum Physicist Просмотреть обновленное сообщение. –