La biblioteca tl-ranges de Sy Brand [1], distribuida bajo una licencia de dominio público, proporciona una excelente implementación de adaptadores de rangos que no llegaron a ser incluidos en C++20. Entre ellos destacaríamos (los elementos estandarizados en C++23 se indican con un asterisco):
- views::adjacent y views::adjacent_transform (*).
- views::cartesian_product (*).
- views::chunk (*), views::chunk_by (*) y views::chunk_by_key.
- views::cycle.
- views::enumerate.
- views::generate y views::generate_n.
- views::getlines.
- views::repeat (*) y views::repeat_n.
- views::stride (*).
- to (*), para convertir rangos en contenedores.
- views::transform_join y views::transform_maybe.
- views::zip (*) y views::zip_transform (*).
Se incluyen, asimismo, herramientas de programación funcional como compose y bind_back. Puede consultarse la documentación de la biblioteca en la referencia [2].
Esta biblioteca fue empleada en un artículo anterior con el fin de demostrar el modo de empleo de la vista std::views::chunk_by (C++23). Describiremos a continuación el procedimiento de instalación de esta biblioteca en MS Windows a través de MSYS2, concretamente con el entorno de desarrollo mingw-w64 (véase esta serie de posts para más detalles).
En primer lugar, acudiremos a Inicio de Windows y abriremos 'MSYS2 MinGW 64-bit' en modo administrador. A continuación, ejecutaremos, uno a uno, los siguientes comandos:
- git clone https://github.com/TartanLlama/ranges.git
- cd ranges
- cmake -B build -G "MinGW Makefiles"
- cmake --install build
La biblioteca quedará así instalada en la carpeta 'C:/Program Files (x86)/tl-ranges'. El enlace a la biblioteca en ficheros de configuración CMakeLists.txt tomará la forma:
find_package(tl-ranges REQUIRED)
target_link_libraries(${PROJECT_NAME} PRIVATE
# ...
tl::ranges
)
Referencias bibliográficas:
- TartanLlama/ranges - https://github.com/TartanLlama/ranges
- Ranges - tl libraries documentation - https://tl.tartanllama.xyz/en/latest/api/ranges/index.html
No hay comentarios:
Publicar un comentario