C++ Developer • Cpp System Programming. HighLoad, Алгоритмы и Структуры данных. Разработка на Linux и Windows. STL, Boost, Qt и Embedded.
Прочее · 10 июня 2026 г.
Data-Parallel Types: алгоритмы (C++26) — 10 июня 2026 г. в 06:15:36.061
Data-Parallel Types: алгоритмы (C++26) Библиотека «data-parallel types» для SIMD-векторов (пространство имён std::experimental, алиас stdx) предоставляет четыре специальных алгоритма: `min, max, minmax и clamp. min, max, minmax - min(a, b) и max(a, b) принимают два SIMD-вектора и возвращают вектор покомпонентных минимумов/максимумов. - minmax(a, b) возвращает пару SIMD-векторов: первый — покомпонентные минимумы, второй — максимумы. - Автор отмечает, что строка stdx::minmax(a, b) у него не компилировалась ни в GCC, ни в Clang (на момент публикации). clamp - stdx::clamp(v, lo, hi) применяет std::clamp к каждому элементу SIMD-вектора: значения ниже lo поднимаются до нижней границы, выше hi — опускаются до верхней. - Показаны два примера: ограничение к диапазону INT8_MIN..INT8_MAX и к 0..UINT8_MAX; на выводах видно, как выходящие за пределы элементы прижимаются к границам. Итог - Для SIMD-векторов доступны привычные «минимумы/максимумы» и покомпонентный clamp. - minmax задуман как удобный возврат пары (min/max), но в текущих компиляторах может не собираться. - Дальше автор планирует разбирать новые возможности C++26 (в частности, контракты). https://www.modernescpp.com/index.php/data-parallel-types-algorithms/ #cpp #programming 👉 @cpp_lib

