std::vector
pivothigh(const std::vector &src,
const unsigned int left,
const unsigned int right) {
const auto nan = std::numeric_limits::quiet_NaN();
const auto N = src.size();
std::vector result(N, nan);
for (auto i = left; i < N - right; i++) {
const auto val = src[i];
bool is_pivot = true;
for (auto j = i - left; j val) {
is_pivot = false;
break;
}
}
if (is_pivot) {
result[i] = val;
}
}
return result;
}
Как преобразовать приведенное выше в векторизованную функцию kdb/q: Pivothigh:{[src;left;right] ...? п>
Вот код C++ для расчета максимумов пивот, содержащий два вложенных цикла for: [code]std::vector pivothigh(const std::vector &src, const unsigned int left, const unsigned int right) { const auto nan = std::numeric_limits::quiet_NaN(); const auto N = src.size(); std::vector result(N, nan); for (auto i = left; i < N - right; i++) { const auto val = src[i]; bool is_pivot = true; for (auto j = i - left; j val) { is_pivot = false; break; } } if (is_pivot) { result[i] = val; } } return result; } [/code] Как преобразовать приведенное выше в векторизованную функцию kdb/q: Pivothigh:{[src;left;right] ...? п>