2012-04-09 79 views

回答

2

boost::array基於模板參數工作。模板參數不能是運行時值。所以不行。

此外,VLA僅適用於在堆棧中聲明的數組(ObjType val[someInteger];)。如果你買不起堆分配,只要使用它們並不適用於數組聲明對象(struct ObjType { int val[someInteger]; };內。因此,即使一個模板參數可以是運行時的值,它不會幫你的。

std::vector分配器從預分配內存的「堆棧」中抽取

+0

是否STL,Boost或其他提供這樣的堆棧式分配器還是必須自己編寫? – 2012-04-09 17:02:20

+0

我相信STL只提供' std :: allocator',它使用'new'和'delete'.boost確實提供了一些分配器,包括一個池內存分配器(http://www.boost.org/doc/libs/1_49_0/libs/pool/doc /html/index.html),它可以做你想做的事情,否則,你將會擁有e寫它。 – 2012-04-09 17:46:16