Ошибка компиляции при сериализации boost::unordered_set

Прежде всего, поддерживает ли 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]

Я не уверен, нормально ли пренебрегать этим.


person user957121    schedule 01.05.2013    source источник
comment
вы пробовали с boost/serialization/hash_set.hpp?   -  person TemplateRex    schedule 01.05.2013
comment
@rhalbersma Я пробовал и получил много ошибок. 'В функции-члене 'void boost::serialization::stl::archive_input_hash_set‹Archive, Container›::operator()(Archive&, Container&, unsigned int)':' -- 'stack_construct' не является членом 'boost: :serialization::detail' и так далее.   -  person user957121    schedule 01.05.2013
comment
Я решил проблему, включив ‹boost/serialization/vector.hpp› Благодаря [этот пост] [1] [1]: stackoverflow. com/a/9437157/957121   -  person user957121    schedule 04.05.2013


Ответы (1)


Чтобы ответить на ваш первый вопрос, в библиотеке boost нет поддержки сериализации для сериализации контейнеров boost.unordered.

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

person balas bellobas    schedule 28.05.2014