Как использовать boost :: serialization для std :: stack? - PullRequest
0 голосов
/ 02 февраля 2012

Я знаю, что мы можем использовать boost :: serialization для std :: vector, list, map и т. Д., Пока я включаю соответствующий файл заголовка boost, например:

#include <boost/serialization/list.hpp>

Но как я могу использовать boost :: serialization для std :: stack?

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Я знаю, что это старый, но я недавно столкнулся с этой проблемой. Я не был удовлетворен решением использования std :: deque, потому что мне действительно требовался только интерфейс стека. В настоящее время улучшена поддержка сериализации std :: stack путем включения этих заголовочных файлов в следующем порядке

#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;
    }
};
0 голосов
/ 13 мая 2012

Заменить std::stack на std::deque и включить:

#include <boost/serialization/deque.hpp>
...