2012-11-25 49 views
3

是否可以限制vector.max_size()以限制向量的增長?限制C++中向量的增長

如果沒有,是否有一個函數來觀察vector.capacity()以確保它不超過確定的數量一個可行的替代品?

+0

在一次調用'push_back'或'insert'或'assign'或'operator ='和* overshoots *期望的最大容量的情況下應該做些什麼?截斷?扔? –

回答

6

排序你可以寫一個自定義分配器,並在std::vector(矢量的第二個模板參數)中使用它。分配器需要滿足these requirements。但是,正確地做這件事並不簡單。而且你的vector在滿足最大尺寸後不會忽略push_back,它會拋出。

1

不是。但是你可以定義你自己的矢量子類(或者創建你自己的全新的矢量實現),如果你真的想要的話,這將允許強制執行這個要求。

+3

繼承'std :: vector'是一個不好的建議。 –

+0

不知道爲什麼它是如此糟糕,但他可以從頭開始完全實現它 – mvp

+2

這是一個壞主意,因爲'std :: vector'不是被設計爲從繼承。 'max_size'不是虛擬的,也不是析構函數。通過'std :: vector'接口的任何訪問都會給出意想不到的結果。 – moswald