Грешка при компилиране при сериализиране на 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.unordered.

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

person balas bellobas    schedule 28.05.2014