编译错误:在序列化boost::unordered_set时出错。

3
首先,boost::serialization现在支持unordered_set了吗?我没有找到头文件boost/serialization/unordered_set.hpp。
这是我尝试实现的代码:
namespace boost {
namespace serialization{

template<class Archive, typename T, typename H, typename P, typename A>
void save(Archive &ar,
          const unordered::unordered_set<T,H,P,A> &s, const unsigned int) {
    vector<T> vec(s.begin(),s.end());   
    ar<<vec;    
}
template<class Archive, typename T, typename H, typename P, typename A>
void load(Archive &ar,
          unordered::unordered_set<T,H,P,A> &s, const unsigned int) {
    vector<T> vec;  
    ar>>vec;   
    std::copy(vec.begin(),vec.end(),    
              std::inserter(s,s.begin()));  
}

template<class Archive, typename T, typename H, typename P, typename A>
void serialize(Archive &ar,
               unordered::unordered_set<T,H,P,A> &s, const unsigned int version) {
    boost::serialization::split_free(ar,s,version);
}

}
}

以下是错误信息:

'class std::vector<int, std::allocator<int> >' has no member named 'serialize'

此外,以下代码仍然会收到警告:

boost::archive::text_oarchive(ss)<<s1; 

Warning:comparison between signed and unsigned integer expressions [-Wsign-compare]

我不确定是否可以忽略它。


你尝试过使用 boost/serialization/hash_set.hpp 吗? - TemplateRex
@rhalbersma 我尝试了很多次,但出现了很多错误。'在成员函数 'void boost::serialization::stl::archive_input_hash_set<Archive, Container>::operator()(Archive&, Container&, unsigned int)' 中:'--'stack_construct' 不是 'boost::serialization::detail' 的成员,等等。 - user957121
1
我通过包含<boost/serialization/vector.hpp>解决了这个问题。感谢这篇帖子 - user957121
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接