在堆栈中分配未初始化的用户定义类型数组

问题描述 投票:0回答:1

我有一个充当固定容量容器(Graph 类)的类,并且我有一个没有默认构造函数的类,它将成为该容器(Node 类)的元素。

我希望图表创建节点,给我返回刚刚创建的节点的引用。

使用

std::vector<Node>
使用
reserve
push_back
就很简单了。但是,如果可能的话,我宁愿避免使用堆。

我尝试使用

std::array
但我的理解是数组中的元素必须初始化。但这是不可能的,因为元素不是默认可构造的。

我该怎么做才能获得类似于矢量

reserve
但在静态/堆栈内存中的东西?

c++ memory containers
1个回答
0
投票

当您想要具有 std::vector 语义的 std::array 时,您想要的是 std::static_vectorfixed_capacity_vector

不幸的是,它还没有完全标准化。

有一些实现,例如gnzblg的githubboostsEASTLs的fixed_vectorfolly的small_vector中的实现。其中一些具有“后备”功能,如果您超过预先分配的大小,它们将恢复到正常的

vector
行为。

© www.soinside.com 2019 - 2024. All rights reserved.