C++, содержит ли стандартная библиотека компонент с семантикой байтового потока, который является более быстрым, чем std::stringstream

Скажите, пожалуйста, какое средство из состава стандартной библиотеки C++ я могу использовать для работы с потоком байтов в памяти (не в файле)?

Мне нужна следующая семантика:

  • В одном месте я беру объект потока и пишу в него байты (возможно, последовательности байтов);
  • В некоторых других местах я хочу давать такой поток только на чтение (например, через ссылку на более базовый класс).

Я полистал документацию и увидел только две основные разновидности потоков:

  • fstream;
  • stringstream.

Со fstream все понятно, он только для файлов. Ко stringstream имеется ряд претензий.

Первое - скорость записи, она очень маленькая, на уровне 0.5 ГБ в секунду, даже если писать 0.5 ГБ одним куском в поток, в котором необходимое место уже зарезервировано. Мне точно известно, что на моем железе за одну секунду я могу скопировать 5 ГБ памяти (через memcpy).

Второе - я не уверен, что методы stringstream являются виртуальными, и что я могу передавать объект типа stingstream в функцию, которая принимает ссылку на istringstream.

Можно ли реализовать то, что я хочу, без написания собственных велосипедов?


Ответы (0 шт):