scoped_array
Header : "boost/scoped_array.hpp"
對于使用動態(tài)分配的數(shù)祖來說vector經(jīng)常是我們最好的選擇.但是有倆個情況使用普通數(shù)組更為妥善.
1:優(yōu)化,vector帶來過大的開銷在體積和速度上.
2:表達的意圖,使用長度固定的數(shù)組
動態(tài)數(shù)組暴露出和普通指針一樣的危險,伴隨著調(diào)用delete操作符來代替delete[]操作符的錯誤,
我在很多地方看到過這個錯誤,只一個就不敢想象,何況應(yīng)用的如此廣泛在容器類的所有權(quán)中!
scoped_array用于數(shù)組類似scoped_ptr作用于單個對象的指針,它delete內(nèi)存,不同之處是scoped_array
使用操作符delete[].
scoped_array是一個單獨類而不是scoped_ptr的特化是因為使用metaprogramming技術(shù)來分別單個對象
的指針和數(shù)組指針是不可能的.
不管如何努力的去區(qū)別,沒有人發(fā)現(xiàn)一個可靠的方法來實現(xiàn),因為數(shù)組類型太容易退化到指針類型并不帶有
任何類型轉(zhuǎn)化信息來說明它到底指像的是什么類型.結(jié)果你有責任采用scoped_array而不是scoped_ptr,
就像你必須使用delete[] operator而不是delete operator.優(yōu)勢是scoped_array幫你處理delete,
并且提醒你它處理的是數(shù)組,原生指針卻做不到此點.
scoped_array和scoped_ptr和相似,不同的是它提供operator[]來模仿原生數(shù)組.
scoped_array優(yōu)于原始,動態(tài)分配數(shù)組之一.它管理動態(tài)數(shù)組的生命期,與scoped_ptr如何管理所指向?qū)ο?/FONT>
的生命期類似,雖然如此,但很多情況下,std::vector卻更可取,因為它更靈活,更強大.
當你需要固定長度的數(shù)組,使用scoped_array而不是std::vector.
樓主繼續(xù)
lima88ca@yahoo.ca