【问题标题】:How to use boost::serialization for std::stack?如何为 std::stack 使用 boost::serialization?
【发布时间】:2012-02-24 17:25:50
【问题描述】:

我知道我们可以将 boost::serialization 用于 std::vector 、 list 、map 等,只要我包含相应的 boost 头文件,例如:

#include <boost/serialization/list.hpp>

但是我怎么能对 std::stack 使用 boost::serialization 呢?

谢谢

【问题讨论】:

    标签: c++ boost stack std boost-serialization


    【解决方案1】:

    我知道这是旧的,但我最近遇到了这个问题。我对使用 std::deque 的解决方案不满意,因为我真的需要 only 一个堆栈接口。目前,通过包含这些头文件按此顺序

    来增强对 std::stack this 的序列化支持
    #include "boost/serialization/deque.hpp"
    #include "boost/serialization/stack.hpp"
    

    一个完整的例子应该是这样的:

    #include <string>
    #include <stack>
    #include "boost/archive/text_oarchive.hpp"
    #include "boost/archive/text_iarchive.hpp"
    #include "boost/serialization/deque.hpp"
    #include "boost/serialization/stack.hpp"
    
    struct s
    {
        std::stack<std::string> stack;
    
    private:
        friend class boost::serialization::access;
        template<class Archive>
        void serialize(Archive & ar, const unsigned int version)
        {
            ar & stack;
        }
    };
    

    【讨论】:

      【解决方案2】:

      std::stack 替换为std::deque 并包括:

      #include <boost/serialization/deque.hpp>
      

      【讨论】:

        猜你喜欢
        • 2011-05-15
        • 1970-01-01
        • 1970-01-01
        • 2011-12-28
        • 1970-01-01
        • 2018-02-02
        • 1970-01-01
        • 2018-10-06
        • 2011-05-04
        相关资源
        最近更新 更多