Эффективный способ объединения нескольких буферовC++

Программы на C++. Форум разработчиков
Anonymous
Эффективный способ объединения нескольких буферов

Сообщение Anonymous »

Мне нужно разработать эффективный и читабельный класс с двумя основными функциями:
  • Код: Выделить всё

    add_buffer(char* buffer)
    — добавить буфер.
  • Код: Выделить всё

    char* read_all()
    — получить один большой буфер, содержащий все буферы, добавленные пользователем до сих пор (по порядку).
например :

Код: Выделить всё

char first_buffer[] = {1,2,3};
char second_buffer[] = {4,5,6};

MyClass instance;
instance.add_buffer(first_buffer);
instance.add_buffer(second_buffer);
char* big_buffer = instance.read_all(); // big_buffer = [1,2,3,4,5,6]
ПРИМЕЧАНИЕ. Существует множество решений этой проблемы, но я ищу эффективное, поскольку в реальной жизни буферы будут их много и они большие, и я хочу сэкономить много копий и перераспределений (например, что делает std::vector). Мне также нужен читаемый код C++.

ПРИМЕЧАНИЕ. Реальная проблема заключается в следующем: я читаю данные из HTTP-запроса, который пришли ко мне отдельными кусками. После того, как все фрагменты прибыли, я хочу вернуть пользователю все данные.

Подробнее здесь: https://stackoverflow.com/questions/345 ... le-buffers

Вернуться в «C++»