如何Boost ::序列化矢量散列表?

我有一个核心数据结构,我正在加载值:它是一个向量的散列表。 然而,矢量包含一个结构。 此外,该结构使用模板类型。

我需要序列化这个数据结构并定期保存到磁盘。 然后,在稍后 - 在不同的程序中 - 我需要加载序列化的数据结构。

这是一个精简版本的结构。 我最低限度地定义它们,但除了这个裸露的骨骼版本之外,还有其他数据项目(成员)。

#include<vector>
#include<string>
#include<map>
#include<fstream>
#include<stdlib.h>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/map.hpp>
#include <boost/archive/text_oarchive.hpp>
using namespace std;

template<typename T>
struct DataUnit{
    size_t time;
    string transaction_string;
    T transaction;             
}

template<typename T>
struct DataStructure{
    map<string transaction_hash, vector<DataUnit<T>> > hashmap;
    int max_transactions;

    // I have a method to add stuff, but omitted for readability
} 

我从第一个结构DataUnit开始,并对其进行如下修改:

    template<typename T>
struct DataUnit{
    size_t time;
    string transaction_string;
    T transaction;
    template<class Archive>
    void serialize(Archive & ar, const unsigned int version){
        ar & time;
        ar & transaction;
        ar & transaction_string;
    }
};

最终,我需要序列化数据结构。 但是,当我用下面的代码运行这个:

int main(){
    DataUnit<int> hi;
    hi.time = time(NULL);
    hi.transaction = 1;
    hi.transaction_string = "world";
    return 0;
}

这个世界由于提升而出现错误。 据我所知,我完全按照教程示例。 如何提升序列化这些对象?

一些错误(但有很多我不能相信这不是根本......):

在函数`boost :: archive :: text_oarchive :: text_oarchive(std :: ostream&,unsigned int)

未定义的引用`boost :: archive :: text_oarchive_impl :: text_oarchive_impl(std :: ostream&,unsigned int)'

最后的错误:

对`boost :: archive :: archive_exception ::〜archive_exception()'的未定义引用

它从那里继续......但我没有看到我缺少的任何内容......(提升是通过Cygwin安装的)...

(以管理员身份运行代码...我输出的文本文件存在,具有读写权限... ofs对象正在成功创建)...


目前,完全没有想法... (尝试链接lboost_serialization,重新安装boost)不知道如果我从代码丢失的东西^^^


问题是你的依赖关系在build命令上的顺序。 您需要在使用它们的模块之后列出依赖项。 你也不会编译.h文件。 它们应该包含在使用它们的.cpp文件中。 试试这个命令:

g++ -std=c++11 main.cpp hashmap_transaction.cpp -o run.exe  -lboost_serialization
链接地址: http://www.djcxy.com/p/45665.html

上一篇: How to Boost::serialize a hashmap of vectors?

下一篇: Boost serialization and vector of lots of objects