Tag: STD-RANGES
Estoy utilizando algoritmos de std::ranges (max y max_element) con una proyección. ¿Es posible que el resultado también sea el valor proyectado? Actualmente tengo que llamar nuevamente a la función de proyección en el valor devuelto. Ejemplo: Aquí quiero obtener el tamaño de la cadena más larga, pero los algoritmos solo . . . Read more
Mira este ejemplo de código: enlace: #include <ranges> int main() { for(auto i : std::ranges::iota_view(1) | std::views::reverse) break; } Se compila en gcc (no puedo verificar en clang/msvc, ya que no admiten rangos). Por supuesto, se ejecuta “infinitamente” y no hace nada. También verifiqué que hacer std::ranges::rbegin(inf) o std::ranges::rend(inf) en . . . Read more
Aquí se indica que std::ranges::size debería devolver un entero sin signo. Sin embargo, cuando lo utilizo en un vector de Eigen (con Eigen 3.4), lo siguiente se compila: Eigen::VectorXd x; static_assert(std::same_as<eigen::vectorxd::index, decltype(std::ranges::size(x))=””>); donde Eigen::VectorXd::Index es notoriamente un entero con signo. Al observar la implementación de std::ranges::size, noté que el tipo . . . Read more
¿Por qué Eigen::VectorXd no satisface el concepto std::ranges::contiguous_range? Es decir, static_assert(std::ranges::contiguous_range<Eigen::VectorXd>); no se compila. Además, ¿existe la posibilidad de especializar una plantilla para que los vectores de Eigen cumplan con el concepto de rango continuo? Por ejemplo, podemos especializar std::ranges::enable_borrowed_range para que cualquier rango cumpla con el concepto std::range::borrowed_range. En . . . Read more
Es la primera vez que me adentro en la nueva biblioteca <ranges> y he intentado un pequeño experimento combinando std::views::transform con una lambda de estado y ‘piping’ el rango resultante a std::views::drop: “`c++ #include <iostream> #include <ranges> #include <vector> using namespace std; int main() { auto aggregator = [sum = . . . Read more