C++, содержит ли стандартная библиотека компонент с семантикой байтового потока, который является более быстрым, чем std::stringstream
Скажите, пожалуйста, какое средство из состава стандартной библиотеки C++ я могу использовать для работы с потоком байтов в памяти (не в файле)?
Мне нужна следующая семантика:
- В одном месте я беру объект потока и пишу в него байты (возможно, последовательности байтов);
- В некоторых других местах я хочу давать такой поток только на чтение (например, через ссылку на более базовый класс).
Я полистал документацию и увидел только две основные разновидности потоков:
- fstream;
- stringstream.
Со fstream все понятно, он только для файлов.
Ко stringstream имеется ряд претензий.
Первое - скорость записи, она очень маленькая, на уровне 0.5 ГБ в секунду, даже если писать 0.5 ГБ одним куском в поток, в котором необходимое место уже зарезервировано. Мне точно известно, что на моем железе за одну секунду я могу скопировать 5 ГБ памяти (через memcpy).
Второе - я не уверен, что методы stringstream являются виртуальными, и что я могу передавать объект типа stingstream в функцию, которая принимает ссылку на istringstream.
Можно ли реализовать то, что я хочу, без написания собственных велосипедов?