Вы могли бы просто навести указатель.
outfile.write(reinterpret_cast<char*>(&testDump[0]), testDump.size() * sizeof(unsigned short));
Имейте в виду, что полученный файл отформатирован так, как это характерно для вашей конкретной платформы / реализации.Таким образом, вы не можете читать его обратно очевидным образом на несовместимом компьютере.
В Windows это даст 400-Мбайтный файл с каждой из 204800000 пар байтов, представляющих младший порядокunsigned short.
Это должно быть достаточно быстро.Мне трудно поверить, что ваша задача - сохранить данные «используя самый быстрый подход».Как кто-нибудь узнает, что ваш код действительно оптимален, что не существует другого кода, который бы делал это на одну наносекунду быстрее?И какой смысл предпринимать какие-либо дополнительные усилия, чтобы сбрасывать наносекунду?И так далее.
Конечно, может быть быстрее использовать алгоритм быстрой потоковой компрессии для уменьшения необходимого дискового пространства, так как операция, вероятно, будет связана с дисковым вводом / выводом.Но код будет гораздо более сложным, и от того, насколько сжимаемыми являются данные, зависит то, поможет ли он или нет.