微優化人員的前導
記?。?/trans>
“程序員會浪費大量的時間來思考或擔心程序中非關鍵部分的速度,而這些提高效率的嘗試在考慮調試和維護時實際上會產生很大的負面影響。我們應該忘記效率很小的問題,比如97%的時間:過早的優化是萬惡之源。然而,我們不應在這個關鍵的3%中放棄我們的機會“。
(多虧了變態(全部報價)
不要使用C數組,而不是向量(或其他什么),因為你認為它更快,因為它應該是低級的。你就錯了。
默認使用向量(或適合您的需要的安全容器),然后如果分析器認為這是一個問題,看看是否可以通過使用更好的算法或更改容器來優化它。
這就是說,我們可以回到原來的問題。
靜態/動態陣列?
C+數組類比低級C數組表現得更好,因為它們對自己了解很多,并且能夠回答C數組不能回答的問題。更重要的是,它們通常是使用模板和/或內聯編寫的,這意味著在調試中出現的大量代碼解決了在發布版本中生成的很少或沒有代碼,這意味著與其內置的不太安全的競爭沒有區別。
總而言之,它分為兩類:
動態陣列
使用指向malloc ed/新ed數組的指針最多將與std:vectorv版本一樣快,而且安全性要低得多(請參閱利特的職位).
所以使用std:載體。
靜態陣列
使用靜態數組最多是:
所以請使用STD:數組.
未初始化存儲器
有時,使用vector而不是原始緩沖區會導致可見成本,因為vector將在構造時初始化緩沖區,而它替換的代碼沒有,正如所述伯尼在他的回答.
如果是這種情況,則可以使用unique_ptr而不是vector或者,如果代碼線中的情況不例外,則實際上編寫一個類。buffer_owner這將擁有該內存,并允許您輕松、安全地訪問它,包括調整大小(使用realloc),或者任何你需要的東西。