【问题标题】:Compile error on serializing boost::unordered_set序列化 boost::unordered_set 时编译错误
【发布时间】:2013-05-01 08:28:28
【问题描述】:

首先,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吗?
  • @rhalbersma 我尝试了很多错误。 '在成员函数'void boost::serialization::stl::archive_input_hash_set::operator()(Archive&, Container&, unsigned int)':'--'stack_construct' 不是'boost: :serialization::detail' 等等。
  • 我通过包含 解决了这个问题,感谢 [this post][1] [1]:stackoverflow.com/a/9437157/957121

标签: c++ serialization boost boost-serialization unordered-set


【解决方案1】:

要回答您的第一个问题,boost 库不提供用于序列化 boost.unordered 容器的序列化支持。

http://meetingcpp.com/index.php/talkview13/items/2.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多