Какой тип данных следует использовать в С++ при работе с бинарными блоками данных?

В то время как string следует использовать для работы со строками, я хотел бы знать, какую структуру вы должны использовать в С++ при работе с блоками данных.

Я спрашиваю об этом, потому что было бы лучше использовать один параметр вместо передачи char* data и size_t size (или настраиваемой структуры).

Ответы

Ответ 1

std::vector<unsigned char>

или, предпочтительно,

std::vector<std::uint8_t>

(В С++ 11, uint8_t можно найти в <cinttypes>. Более старые компиляторы, но не MSVC, могут иметь заголовок C99 <inttypes.h>. Если ваши данные представляют собой последовательность из 16-разрядных единиц, используйте uint16_t и т.д.)

Если размер блоков данных известен во время компиляции, std::array подходит; он тратит меньше места, чем vector.

Ответ 2

В STL есть несколько контейнеров, а не только vector. Посмотрите и выберите, что подходит вашей ситуации.

Ответ 3

Вышеприведенные решения хороши, но это решение может быть хорошим: