2
A
答えて
2
解決済み。 http://liveworkspace.org/code/652cab59dc33d280b6d48470c11cfb91
#include <iostream>
#include <sstream>
#include <boost/fusion/algorithm/iteration/for_each.hpp>
#include <boost/fusion/include/for_each.hpp>
#include <boost/fusion/container/vector.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/container/vector/vector_fwd.hpp>
#include <boost/fusion/include/vector_fwd.hpp>
#include <boost/fusion/container/generation/make_vector.hpp>
#include <boost/fusion/include/make_vector.hpp>
#include <boost/fusion/sequence/comparison/equal_to.hpp>
#include <boost/fusion/include/equal_to.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/serialization/serialization.hpp>
/***************************************************************************/
template<typename archive_type>
struct item_serializer {
item_serializer(archive_type& ar):ar(ar) {}
template<typename T>
void operator()(const T& o) const {
ar << o;
}
archive_type& ar;
};
template<typename archive_type, typename V>
archive_type& serialize_fusion_vector(archive_type& ar, const V& v) {
boost::fusion::for_each(v, item_serializer<archive_type>(ar));
return ar;
}
template<typename archive_type>
struct item_deserializer {
item_deserializer(archive_type& ar):ar(ar) {}
template<typename T>
void operator()(T& o) const {
ar >> o;
}
archive_type& ar;
};
template<typename archive_type, typename V>
archive_type& deserialize_fusion_vector(archive_type& ar, V& v) {
boost::fusion::for_each(v, item_deserializer<archive_type>(ar));
return ar;
}
/***************************************************************************/
int main() {
boost::fusion::vector<int, char, double> src(boost::fusion::make_vector(3, '4', 5.41)), dst;
std::ostringstream os;
{ boost::archive::binary_oarchive oa(os);
serialize_fusion_vector(oa, src);
}
std::istringstream is(os.str());
{ boost::archive::binary_iarchive ia(is);
deserialize_fusion_vector(ia, dst);
}
std::cout << ((src == dst) ? "is equal" : "is not equal") << std::endl;
}
/***************************************************************************/
+0
+1素敵な仕事のためにこのよう
。私はコードのほんの一部でFusion Mapsのシリアライザが好きだと思う:http://stackoverflow.com/questions/23093198/how-do-i-add-boost-archive-serialization-support-for-boost-フュージョンマップ/ 23094037#23094037 – sehe
関連する問題
- 1. fusion :: vector + fusion :: push_back = fusion :: vector?
- 2. mpl :: vectorからfusion :: vectorを生成する
- 3. 実行時にboost :: fusion :: vectorの要素を見つける方法は?
- 4. 実行時にboost :: fusion :: vectorをどのように埋めるのですか?
- 5. boost :: fusion :: boost :: fusion :: mapをboost :: fusion :: foldに変換します。
- 6. 2dリストをRDD [vector]またはJavaRDD [vector] scalaに変換する
- 7. グラフを読むためにvector of vectorを使用するには?
- 8. データベースVectorクラスとフレームワークVectorクラスを区別する方法は?
- 9. C++のstd :: vectorをstd :: vector <unsigned char>に変換する
- 10. シリアライズしてデータをシリアライズする
- 11. boost :: fusion :: tupleのmpl :: transform
- 12. Drools 6 Fusion Notification
- 13. Xamarin Forms - Control Fusion
- 14. javascriptとfusionテーブル
- 15. Google Fusion Table "Mouseover"
- 16. Javascript and Fusion Table
- 17. Yelp Fusion POSTリクエスト
- 18. PowとVMware Fusion
- 19. std :: vectorへのstd :: normal_distributionをstd :: vectorに格納するためにバインドする
- 20. クッキーの辞書をシリアライズするには?
- 21. Hibernateでコレクションプロパティをシリアライズするには?
- 22. Avroでjava.math.BigDecimalをシリアライズするには?
- 23. C#でペンをシリアライズするには?
- 24. Javaでリストをシリアライズするには?
- 25. Haskell:foldr/build fusionを(zip [0 ..])で作成するには?
- 26. Fusion Tablesのテキスト列にハイパーリンクを追加する方法は?
- 27. Fusion Solr Javascript Index StageでカスタムJavaクラスを参照するには?
- 28. R :: vector to std :: vector
- 29. jsonにフォームデータをシリアライズする
- 30. Drools Fusion:性能を測定する
すべての融合配列のための一般的なシリアライズ:http://stackoverflow.com/a/25907825/225186 – alfC