我有一個存儲16個浮點數組的類。我使用一個浮點指針將它們存儲爲一個數組,因此我必須在構造函數中用新運算符初始化數組。我的問題是,將16個浮點數組直接定義爲類的一部分是更有效率/更好的做法,還是應該繼續讓類通過指針存儲數據並在構造函數中調用new?構造一個包含指針的類
2
A
回答
1
當談到內存管理時,沒有普遍的「更好的做法」,所以你應該爲你的特定設計做正確的事情。
如果您始終正好分配16個浮點數,那麼在您的類中嵌入數組將會減少對動態分配器的調用次數。當對象存儲在自動存儲器中時,這可能會有所幫助,但有時可能會造成危害。例如,如果您在自動存儲中創建此類的大數組,則嵌入數組會增加堆棧溢出的可能性。
最好的方法是分析您的內存使用情況和您的時間,並查看分配這些陣列是否導致顯着的減速,或者對內存碎片作出重大貢獻。如果目前的方案不會給您帶來麻煩,那麼沒有理由替代它。
1
如果你知道你到底需要16漂浮,它不太可能這個數字會有所改變,那麼你應該這樣做:
struct MyClass
{
....
float myData[16];
};
沒有什麼錯用這個簡單的設計。如果數組的大小應該從一個案件的不同而不同,那麼最好是使用以下命令:
template <int _len_data>
struct MyClass
{
....
float myData[_len_data];
};
之後,你可以定義變量,如:
MyClass<16> a1;
MyClass<64> a2;
相關問題
- 1. Ç - 加載結構包含一個指針的指針
- 2. NativeCall結構包含指針
- 3. 包含結構的結構與包含指針的結構
- 4. 如何包含一個指針,指向指針結構,其是malloc的塊
- 5. 構造一個char指針數組
- 6. 調用包含類的類的構造內的構造
- 7. copy_to_user一個包含數組(指針)的結構
- 8. 甲包含相同類的另一個構造的構造/對象
- 9. 引用指向結構的指針,該結構包含指向結構的指針的指針
- 10. 初始化一個包含指向結構體指針的指針的結構體
- 11. 包含指向其他結構的指針的結構
- 12. 指向包含結構的結構的指針
- 13. 一個包含vec vecs的類的構造函數
- 14. 聲明包含指向該類型結構的指針數組的結構體
- 15. 如何建立一個構造函數指針到類
- 16. 指針 - 鑄造結構指針+ Malloc
- 17. C++複製構造基類指針
- 18. 構造使得指針類型
- 19. typedef一個包含模板類的共享指針
- 20. 對於包含重載構造函數的類,包含一個默認構造函數良好實踐。
- 21. PDFsharp Ximage不包含包含一個構造函數1參數
- 22. 型鑄造的指針調用構造
- 23. 問題指針和構造
- 24. 從指針C++構造
- 25. Rubymotion和構造指針
- 26. C++指針和構造
- 27. C++:父指針類,包含孩子
- 28. 如何使用cudaMalloc/cudaMemcpy指向包含指針的結構的指針?
- 29. 形成一個返回指向包含類的指針的函數?
- 30. VST C++嵌套類 - 構造和包含
使用'的std ::陣列'對於固定大小的數組和'std :: vector',否則(除非另一種類型更適合您的需要),或者如果您沒有C++ 11。如果每個實例都使用相同的值,請將其設置爲靜態。 – chris
如果你總是需要浮點數組,那麼將數組作爲成員更合理。它更高效,代碼更清潔。當然,如果你想讓它們成爲「可選」,或者如果你需要一個大陣列,從堆中分配將會更合理 –