【发布时间】:2015-02-13 07:53:24
【问题描述】:
Boost序列化库功能强大,但有些功能我受不了。 例如,Person 是一个类,而我有一群人:
int n = 10;
Person **persons = new Person*[n];
for(int i = 0; i < n; i++) {
persons[i] = new Person(...); // whatever Person is.
}
在这里,我想对人物进行序列化,但没有成功。如果我像这样更改代码:
Person *persons[10];
for(int i = 0; i < n; i++) {
persons[i] = new Person(...); // whatever Person is.
}
现在它确实起作用了。但在我的项目中,n 不是常数。所以我想知道为什么boost序列化库不支持“指针到指针”序列化。在实际项目中,“指针到指针”很常见,但boost不支持。那么,boost 序列化库有用吗?我不这么认为……
【问题讨论】:
-
In real project, "pointer to pointer" is very common, but boost doesn't support.实际上是错误的,std::vector、boost::ptr_vector等处理这个。手动调用 new/delete 应该是不常见的。 -
是的,boost 支持 STL 库,但是对于时间要求严格的程序,vector/list/set 的性能比 array 差。数据量大,使用STL库查找和遍历会很慢...
-
vector只是动态数组,没有别的,我不知道,查找和遍历如何会很慢。您使用分析器来解决这个问题? -
在 c++ 中,“指向指针的指针”非常不常见。同样相关:stackoverflow.com/questions/27430431/…
-
这个“向量的性能比数组差”的业务让我想起了 CppCon 小组中的the story Bjarne told。
标签: c++ pointers serialization boost