Chodzi Ci o zwykłe mnożenie części real i imag przez skalar? No to można szybko przez std::transform
Bez uogólniania rozwiązania:
#include <iostream>
#include <vector>
#include <complex>
#include <algorithm>
#include <iomanip>
int main() {
std::vector<int> vec1 = {1, 2, 3, 4};
std::vector<std::complex<double>> vec2 = {{12.3, 44.1}, {143.4, 442.1}, {24.2, 44.4}, {231.7, 328.9}};
std::vector<std::complex<double>> result;
result.reserve(vec1.size());
std::transform(vec2.cbegin(), vec2.cend(), vec1.cbegin(), std::back_inserter(result),
[](std::complex<double> cpx, int scl) -> std::complex<double> {
double val = scl;
return {cpx.real() * val, cpx.imag() * val};
});
for(auto& val: result) {
std::cout << std::setprecision(8) << val << '\n';
}
}