Если вы хотите сериализовать определяемые пользователем типы, вам нужно добавить serialize шаблон функции в ваш класс.В этом методе вы указываете, какие элементы данных вашего класса сериализуются / восстанавливаются.
Поскольку шаблон функции-члена не может быть определен для локальных определений перемещений класса MyKey , MyValue из основная функция:
struct MyKey {
int d0, d1, d2, a0, b0, a1, b1, a2, b2;
bool operator < (const MyKey& o) const {
return std::tie(d0, d1, d2, a0, b0, a1, b1, a2, b2)
< std::tie(o.d0, o.d1, o.d2, o.a0, o.b0, o.a1, o.b1, o.a2, o.b2);
}
template<class Ar>
void serialize (Ar& ar, const unsigned int) {
ar & d0;
ar & d1;
// ditto
}
};
struct MyValue {
int p0, p1, p2;
template<class Ar>
void serialize(Ar& ar, const unsigned int) {
ar & p0;
ar & p1;
//
}
};
int main (int argc, char** argv)
{
//...
}
Вы должны вызывать oa << pobj;
только один раз, после того как вы построили карту:
for(int i=0;i<5000000;i++) {
pobj.insert({{i, i+1, i+2, i+3, i+4, i+5, i+6, i+7, i+8}, {i+9, i+10, i+11}});
}
oa << pobj;