0
我有代碼看起來像這樣:升壓系列化
struct DataStruct
{
// some fields here
};
class C1
{
public:
C1(size_t n)
{
ptrData = new DataStruct[n];
ptrPtrs = new DataStruct*[n];
for(size_t i=0;i<n;i++)
ptrPtrs[i] = &ptrData[i];
}
virtual ~C1()
{
delete[] ptrData;
delete[] ptrPtrs;
}
DataStruct* ptrData;
DataStruct** ptrPtrs;
};
並且需要它最好由升壓::序列化序列化。我沒有找到方法來保存動態分配的數組,除了逐項保存在循環中。但不知道如何保存第二個數組 - 指針數組。是否有可能通過增加或多或少的便利方式來實現?
好吧,我希望序列化有某種適配器允許指定數組長度,就像我在上面的回答中一樣。 vector不是一個選項,因爲我記得它不能保證哪些元素不會被內部移動,所以不可能存儲指向vector元素的指針。 – ilya
如果您不以任何方式修改矢量的大小,則不會移動您的矢量元素,並且如果您保留在前面,它將永遠不會移動它們。 – CashCow
您還可以存儲智能指針的向量。即使向量中的元素移動,它們指向的項目也不會移動,並且您的智能指針將保持有效。你可以使用shared_ptr來做這件事,如果你小心的話,可以使用unique_ptr,但不要使用auto_ptr。 – CashCow