Mnożenie wektorów o różnych typach

0

Mam do wymnożenia dwa zapełnione wektory:

std::vector<int> vec
std::vector<complex<double>> vec2 

Czy powinienem najpierw zrobić konwersję int na complex double, czy mogę bez tego wymnożyć po kolei wartości obu wektorów i czy jest na to prosty sposób?

1

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';
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1