【发布时间】:2019-11-18 09:27:12
【问题描述】:
有什么方法可以将向量的索引传递给它的元素的构造函数? 例如:
#include <iostream>
#include <vector>
class Foo {
public:
Foo(unsigned long index) {
std::cout << index << std::endl;
}
};
int main() {
std::vector<Foo> foo;
foo.resize(2); // any way to make this work?
}
此代码确实不起作用,因为编译器不知道如何构造Foo(unsigned long index),但我可以做一些技巧(例如自定义分配器?)以使此代码实际工作?
【问题讨论】:
-
如果没有兼容的 default-ctor,不,没有办法让 that 工作。
Foo只能使用提供的 ctor-argument 构造。然而,我很好奇,这个解决方案试图解决的真正问题是什么,因为有可能为那个提供更合适的解决方案,而不是试图让这个工作。 -
@WhozCraig 我使用与此类似的代码通过向量中的“ID”(=index)查找类 Foo 对象。
-
@WhozCraig 我的元素是一个特殊的数据结构,恰好与索引有关系,我只是好奇我是否可以这样做,所以我问:)
-
@reavenisadesk 我明白了。取决于
Foo来自何处的性质以及它们的管理方式(是否有不止一个foo在各个地方浮动?Foo可以从一个foo移动到另一个吗?当Foo从foo中删除 并且此后所有后续索引不再对齐时,期望是什么?),可能值得考虑另一种身份映射。无论如何,感谢您的澄清。
标签: c++