as_bytes из оборачивает тот же участок памяти в std::span без копирования значений.">
⊗cpSpSnBy 246 of 696 menu

Байты через std::as_bytes в C++

Шаблонная функция as_bytes из <span> оборачивает тот же участок памяти в std::span<const std::byte> без копирования значений.

Длина байтового span равна числу элементов, умноженному на sizeof типа. Запишем массив из двух целых и выведем размер байтового вида:

#include <span> #include <cstddef> int pair[] = {100, 200}; std::span<int> nums{pair}; std::span<const std::byte> raw = std::as_bytes(nums); std::cout << raw.size() << "\n";

Исходный числовой span и байтовый указывают на одну область. Запишем вектор из одного int, получим std::as_bytes и выведем длину:

#include <span> #include <vector> #include <cstddef> std::vector<int> slot{42}; std::span<int> view{slot}; auto bytes = std::as_bytes(view); std::cout << bytes.size() << "\n";

Объявите char-массив из двух символов 'm' и 'n', постройте std::span<char>, примените std::as_bytes и выведите размер результата.

Создайте std::vector<double> с одним значением 3.14, свяжите с std::span<double>, возьмите байты через std::as_bytes и выведите size байтового span.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить