Как использовать boost::serialization для std::stack?
Я знаю, что мы можем использовать boost::serialization для std::vector, list,map и т. Д., Пока я включаю соответствующий заголовочный файл boost, например:
#include <boost/serialization/list.hpp>
Но как я могу использовать boost::serialization для std::stack?
Спасибо
1 ответ
Я знаю, что это старый, но я недавно столкнулся с этой проблемой. Я не был удовлетворен решением использовать 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;
}
};
Замещать std::stack
с std::deque
и включают в себя:
#include <boost/serialization/deque.hpp>