gtopt::ScaledView class

Zero-copy lazy view that applies a per-element scale factor.

Models a random-access range: view[i] returns data[i] * scales[i] (or data[i] / scales[i] when constructed with divides). When scales are empty, returns raw data unchanged.

Accepts any integer-like index type (int, size_t, ColIndex, RowIndex).

Public types

class iterator
Iterator support for range-for loops.
enum class Op: uint8_t { multiply, divide }

Public functions

auto begin() const -> constexpr iterator noexcept
auto empty() const -> constexpr bool noexcept
auto end() const -> constexpr iterator noexcept
auto operator[](auto idx) const -> constexpr double noexcept
auto ScaledView() -> constexpr defaulted noexcept
auto ScaledView(const double* data, size_t n, const double* scales, size_t ns, Op op = Op::multiply) -> constexpr noexcept
auto ScaledView(std::span<const double> raw) -> constexpr explicit noexcept
Construct from a raw span (no scaling).
auto size() const -> constexpr size_t noexcept