我正在尝试使用带有boost的默认序列化工具,但我没有设法序列化复杂的向量。我试过这个:
#include <fstream>
#include <complex>
#include <vector>
#include <boost/archive/text_oarchive.hpp>
#include <boost/serialization/vector.hpp>
#include <boost/serialization/complex.hpp>
using namespace std;
typedef complex<double> type;
template<class Archive>
void serialize(Archive& ar, vector<type>& objs, const unsigned version) {
ar & objs;
}
int main(){
vector<type> r;
r.push_back(1.3);
r.push_back(12.12);
r.push_back(-31.05);
ofstream ofs("test.txt");
boost::archive::text_oarchive oa(ofs);
oa & r;
return 0;
}
编译好但在执行时崩溃。但是,如果我做了
typedef double type
然后一切正常。我无法找到解决方案。有什么帮助吗?
谢谢,
扬
答案 0 :(得分:0)
只需结束并标记为已回答:
问题似乎与Visual Studio 2012的boost 1.54实现有关,因为据报道g ++版本的代码可以正常工作。感谢@DieterLücking测试我的代码并指出我正确的方向。
答案 1 :(得分:0)
问题似乎与Visual Studio 2012的boost 1.54实现有关,因为据报道g ++版本的代码可以正常工作。
我会说:
问题似乎与Visual Studio 2012有关,因为据报道g ++版本的代码可以正常工作。
Rbert Ramey