Буфер протокола Google использует стандартный класс строк С++ std::string
как массив байтов переменной величины (см. здесь), аналогичный Python, где строка class также используется как массив байтов (по крайней мере, до Python 3.0).
Этот подход кажется хорошим:
- Это позволяет быстро назначать через
assign
и быстрый прямой доступ черезdata
, который не разрешен с помощьюvector<byte>
- Это позволяет упростить управление памятью и ссылки на константу, в отличие от использования
byte*
.
Но мне любопытно: это предпочтительный способ для байтовых массивов в С++? Каковы недостатки этого подхода (более нескольких static_cast
s)