【发布时间】:2020-09-06 07:48:41
【问题描述】:
我想创建一个类实例的数组/向量(与哪一个无关)。我有以下限制:
- 每个实例都使用不同的参数构造(例如,
Item(0)、Item(1)、Item(2)、...)。 -
Item类已删除其复制和移动构造函数。
上面的约束 #2 似乎排除了使用 std::vector 的可能性,因为向量在调整其后备存储的大小时需要复制或移动入队的实例。
这给我留下了一个数组。对于 C 样式数组和 std::array,似乎没有任何方法可以为数组中的项目指定自定义构造函数,因此我无法在数组索引中就地自定义构造项目。唯一的其他选择是创建一个指针数组并执行array[0] = new Object(0);、array[1] = new Object(1);、array[2] = new Object(2);,但这很麻烦,因为它在堆上分配内存而不仅仅是在堆栈上,并且需要我显式释放内存。
有没有办法做到这一点?
【问题讨论】:
-
只是为了澄清:你想要的是将数组中对象的索引传递给它的构造函数?
-
容器创建后是否需要调整大小?
-
@Kein 这恰好是真的,但我也想知道如果不是这种情况该怎么做。
-
@bolov 不,我预先知道尺寸。
标签: c++