gpt4 book ai didi

c++ - 底层 std::array 的正确类型

转载 作者:太空宇宙 更新时间:2023-11-04 15:23:03 27 4
gpt4 key购买 nike

我是 C++ 的新手,所以如果这个问题的答案显而易见,我深表歉意。

我一直在编写 STL 样式的自定义数据结构,以此来提高我的技能。 (我实际上也确实需要这种结构,但出于学习目的,我有点过分了。)

此结构需要动态调整大小(如 vector ),在我的初稿中,我将底层“容器”设为 C 风格数组,并手动完成所有分配和取消分配。我正在重构,我想使用 C++11 风格的 std::array 作为我的底层结构,只是为了让代码更简洁一些。我的问题是我不知道如何以允许调整大小的方式声明数组类成员。由于不同的模板参数需要不同的类型,我不能只将成员声明为数组,然后在调整大小时将相同的变量分配给数组。

我考虑过为每个可能的大小声明一个成员,比如

private:
array<T, 8>
array<T, 16>
array<T, 32>
...

但我不希望每个数组都默认构造 T 成员。

这里有干净的解决方案吗?还是我只需要坚持使用 C 风格的数组?

感谢您的帮助。

编辑:

在重新阅读我的问题后,我认为它实际上没有意义。我知道 std::array 的大小必须在编译时知道,但出于某种原因我的大脑推断我的目标是不可能的。现在对我来说很明显,我坚持使用 C 风格的数组和堆。我想我只需要把它写出来就可以完全清楚了。

感谢您的回答。

最佳答案

std::array 表示一个数组,其大小是静态已知的(即在编译时),因此不能在此类大小仅在运行时已知的情况下使用。

只需使用 std::vector 代替,它有一个 constructor以大小作为参数。

关于c++ - 底层 std::array 的正确类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14756138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com