2012-04-09 12 views

Antwort

2

boost::array funktioniert basierend auf einem Vorlagenparameter. Vorlagenparameter können keine Laufzeitwerte sein. Also nein.

Außerdem gelten VLAs nur für Arrays, die auf dem Stack deklariert sind (ObjType val[someInteger];). Sie gelten nicht innerhalb Objekte deklariert Arrays (struct ObjType { int val[someInteger]; };. Also selbst wenn ein Template-Parameter ein Laufzeitwert sein könnte, es würde dir nicht helfen.

Wenn Sie keinen Heapzuordnung leisten können, nur verwenden std::vector mit einem Allokator, der aus einem "Stack" von zuvor zugewiesenen Speicher zieht.

+0

Bietet STL, Boost oder andere einen solchen stack-like Allokator oder muss ich es selbst schreiben? –

+0

Ich glaube, die STL bietet nur ' std :: allocator ", die' new' und 'delete' verwendet. Boost stellt einige Zuweiser zur Verfügung, einschließlich eines gepoolten Speicherzuweisers (http://www.boost.org/doc/libs/1_49_0/libs/pool/doc /html/index.html), die tun können, was Sie wollen, sonst werden Sie hav e um es zu schreiben. –

Verwandte Themen