我对 C++ 很陌生,所以如果这个问题的答案很明显,我很抱歉。
我一直在编写一个 STL 风格的自定义数据结构来提高我的技能。(实际上我也确实对这种结构有实际需求,但出于学习目的,我有点过火了。)
这个结构需要动态调整大小(就像一个向量),在我的初稿中,我将底层的“容器”做成了一个 C 风格的数组,并手动完成了所有的分配和取消分配。我正在重构,我想使用 C++11 风格的 std::array 作为我的底层结构,只是为了让代码更简洁一些。我的问题是我不知道如何以允许调整大小的方式声明数组类成员。由于不同的模板参数需要不同的类型,我不能只将成员声明为数组,然后在调整大小时将相同的变量分配给数组。
我考虑过为每个潜在的大小声明一个成员,比如
private:
array<T, 8>
array<T, 16>
array<T, 32>
...
但我不希望这些数组中的每一个都默认构造 T 成员。
这里有干净的解决方案吗?还是我只需要坚持使用 C 风格的数组?
谢谢您的帮助。
编辑:
重新阅读我的问题后,我认为这实际上没有意义。我知道 std::array 的大小必须在编译时知道,但由于某种原因,我的大脑推断出我的目标是不可能的。现在对我来说似乎很明显,我被 C 风格的数组和堆困住了。我想我只需要写出来就可以完全清楚了。
感谢您的回答。