Как наиболее эффективно выполнить операцию деления двух массивов valarray
Есть массив комплексных чисел
std::valarray<std::complex<double>> Buf;
как наиболее эффективно выполнить операцию деления одного участка этого массива на другой?
Например, если нужно разделить участок с 1024 по 2047 элемент на участок с 0 по 1023 элемент.
Что лучше всего использовать вместо циклов типа "for"?
Ответы (1 шт):
Автор решения: dIm0n
→ Ссылка
Вот так можно разделить вторую половину std::valarray на первую:
#include <valarray>
#include <complex>
#include <iostream>
int main() {
std::valarray<std::complex<double>> buf {
{1., 0.},
{2., 0.},
{3., 0.},
{4., 0.},
};
buf[std::slice{2, 2, 1}] /= buf[std::slice{0, 2, 1}];
for (const auto& item : buf) {
std::cout << item << '\n';
}
}
Дока https://en.cppreference.com/w/cpp/numeric/valarray/slice