小编bha*_*tsb的帖子

提升包含Map(带有对象值)和Multimap(带有std :: string值)的Object的序列化:需要什么?

请参阅下面的main()和两个非常简单的类.然后根据Boost序列化(以及显示的内容),我的问题是:

1)B类是否需要定义正常的重载流插入运算符'<<'和'>>'?目前在我的真实代码中它没有这些.

2)store()和load()方法中的类A是否需要明确地迭代map和multimap容器,明确地存储/加载它们的key:value对?例如:

void A::store(const char* filename){

std::ofstream ofs(filename);
boost::archive::text_oarchive oa(ofs);

std::map< std::string, B >::iterator it;

BMap.size();
oa << BMap.size();
for( it = BMap.begin(); it != BMap.end(); it++ ){
    oa <<  it->first;
    oa << it->second;
}

//similar for strMultimap
}
Run Code Online (Sandbox Code Playgroud)

我认为我不需要这样做,但我不确定.

3)假设B类只显示了两个数据成员,是否需要明确包含默认的构造函数?(与隐式默认构造函数相对)

4)B是否需要为比较运算符'>'覆盖?我认为它不是因为这是一个非常简单的类.

最后,对于我未能涵盖的任何内容的任何其他评论表示赞赏!

上述问题的示例代码:

//includes ommitted

int main() {

    std::string file("test.dat");

    A * pA = new A;

    pA->store(file.c_str());
    pA->fillMaps();
    //release data
    pA->load(file.c_str());

    return 0;
}

//includes ommitted

class A
{
    friend class boost::serialization::access;

public:

    std::map< std::string, B > BMap; …
Run Code Online (Sandbox Code Playgroud)

c++ serialization boost map

8
推荐指数
1
解决办法
5993
查看次数

标签 统计

boost ×1

c++ ×1

map ×1

serialization ×1