Вы можете преобразовать вашу карту в вектор POD, так как POD выбирает тип, который может хранить enum + int, например, int64_t
:
Итак, создайте вектор, сканируйте свою карту, создавая элементы вектора, используя несколько битовоперации и данные готовы:
auto t_map = std::map<CODES, int>(); // CODES is an enum type
std::vector<int64_t> vec;
for (auto&& elemMap : t_map)
{
int64_t val = elemMap.first; // store key
val <<= 32; // shift key
val |= elemMap.second; // store value
vec.push_back (val);
}
auto tmp_buffer = boost::asio::buffer(vec); // this is supported
Распаковать вектор на карту должно быть легко.