Байты через 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.