Я пишу инструменты для создания дампа и загрузки общих объектов в двоичный файл. В первой быстрой реализации я написал следующий код для std::vector<bool>
. Работает, но явно не оптимизирован в памяти.
template <>
void binary_write(std::ofstream& fout, const std::vector<bool>& x)
{
std::size_t n = x.size();
fout.write((const char*)&n, sizeof(std::size_t));
for(std::size_t i = 0; i < n; ++i)
{
bool xati = x.at(i);
binary_write(fout, xati);
}
}
template <>
void binary_read(std::ifstream& fin, std::vector<bool>& x)
{
std::size_t n;
fin.read((char*)&n, sizeof(std::size_t));
x.resize(n);
for(std::size_t i = 0; i < n; ++i)
{
bool xati;
binary_read(fin, xati);
x.at(i) = xati;
}
}
Как я могу скопировать внутреннюю память std::vector<bool>
в свой поток?
Примечание. Я не хочу заменять std::vector<bool>
другим.
std::vector<bool>
в другом месте кода, я настоятельно рекомендую вам перейти к чему-то вродеstd::bitset
илиboost::dynamic_bitset
и использовать их функциональностьto_string
или ихostream
перегрузкиoperator<<
. - person rubenvb   schedule 14.04.2015to_string
для бинарного хранилища? Действительно ? ^^ - person Caduchon   schedule 14.04.2015std::vector<bool>
(см., например, этот вопрос) - person rubenvb   schedule 14.04.2015