2015-10-12 49 views
1

我想創建C++程序,其中包含一個由一個或多個動態數組組成的存儲器,用於存儲雙精度數據,並將狀態如果存儲是分段的,如果有多個數組。我可以從哪裏出發?如果存儲分段,用If語句在類中創建動態數組

class DynamicArray { 

public: 
    void addElemement(double num){ 

    } 
    void removeElement(double num){ 

    } 
    void segmentation(int x){ 

    } 
    void merge(){ 

    } 
    void print(){ 

    } 

}; 
int main(){ 

    return 0; 
} 
+0

@IlyasMimouni該問題要求_segmentation fault_,我敢肯定,這不是OP所談論的。 –

+1

不完全確定你在做什麼,但如果你希望類中的數據結構使用多個連續的內存塊,請查看std :: deque。 (STL)。我不確定你是否可以輕易地檢查出deque實際分配了多少個塊,儘管如此...擁有deque屬性使得deque超出最大容量不會需要重新分配所有使用的內存。編輯:檢查nr塊可能通過包裝標準分配器deque。 –

+0

@ErikAlapää聽起來有點令人困惑,但我正在閱讀您發佈的鏈接。謝謝!如果有幫助,我會告訴你。 – MRxBEYOND

回答

0

(升級我一個答案評論,如果它符合該法案;)) http://cpp-tip-of-the-day.blogspot.se/2013/11/how-is-stddeque-implemented.html

不完全確定你所追求的,但如果你想你的類裏面的數據結構使用不止一個連續的內存塊,看看std :: deque。 (STL)。我不確定你是否可以輕易地檢查出deque實際分配了多少個塊,儘管如此...擁有deque屬性使得deque超出最大容量不會需要重新分配所有使用的內存。編輯:檢查nr塊可能是可行的包裝標準分配器爲deque

0

這實際上取決於你想如何構建你的存儲。但正如你所說的存儲分段,我假設你不想使用標準容器,但創建自己的低級結構。

Liminary一句話:你沒有談到你的類應該功能是:一組(僅輸入的每個值的一個副本,什麼remove方法讓想象),堆棧(總是在末尾添加新元素),一個有序集合,使用自然的雙重比較或插入順序...所以我不會給代碼,因爲每個用法都會得到它的實現特殊性。

非連續存儲的常見實現是遞歸樹。它由大塊組成,包含指向非終端(或非葉)節點的其他塊的指針,以及葉子的值(或指向值的指針)。這些塊通常具有固定的大小。例如,它是(高度簡化的)文件如何在文件系統中實現。如果你給你更多細節,你實際上是什麼w

+0

@MRxBEYOND:如果你提供更多關於你真正想要的細節,我可以嘗試給我的答案更精確:-) –