It depends.
Semantically, there are 3 types of arrays:
- arrays with a size fixed at compile time
- arrays with a size fixed at runtime
- arrays with a dynamic size
C++ directly supports the first and third cases, respectively with regular arrays and the std::vector
class.
C also supports the second type with two constructs:
- variable length arrays (on the stack)
- the oldie struct hack or tail-padding
I would advise, in C++, using the std::vector
class in your case. It provides more than what you need, but is simpler to use.
On the other hand, you can still use tail-padding, even in C++. It does require careful engineering though.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…