Мне нужна структура данных, которая принимает несколько несмежных буферов, и я, как пользователь этого класса, могу видеть только один большой непрерывный буфер. Предположим, я могу добавить к нему любое количество буферов, используя такой API, как этот:
void add_buffer(uint8_t* buffer, size_t buffer_length);
и тогда я смогу получить n bytes
с помощью этой функции:
uint8_t* get_buffer(size_t buffer_size, bool& allocated);
Каждый буфер не является смежным с другими буферами, но адрес, возвращаемый вышеуказанной функцией, предназначен для непрерывного блока памяти. Если запрошенный размер буфера от get_buffer
меньше или равен первому буферу внутри класса, будет возвращен только начальный адрес первого буфера, но если запрошенный буфер распределен по нескольким вставленным буферам, новая память будет выделены и данные из этих буферов будут скопированы в него и будет возвращен непрерывный адрес памяти.
Теперь я хочу знать, существует ли какая-либо реализация этой структуры данных или нет, более того, как называется эта структура? :) Может быть, если бы я знал ее название, я мог бы найти ее в своих поисках.