我创建了一个模板来玩对象矢量。
template <class T>
class ensemble{
public:
std::vector<T> list;
// Constructor
ensemble(int i) {
int j;
T *Tptr;
list.reserve(i);
for (j = 0; j < i; j++) {
Tptr = new T;
list.push_back(*Tptr);
}
};
};
在main()中,我可以创建一个对象,它是具有ensemble<T> test(100)
的类T对象的向量,它将生成包含100个T类对象的对象测试,存储在向量中。 / p>
现在我想概括一下,制作一个模板,可以创建一个对象矢量(如上所述)或一个二维对象数组,即矢量矢量。知道如何使用相同的模板吗?
非常感谢提前! Xtof
答案 0 :(得分:0)
您既不需要调用reserve
也不需要在构造函数中执行循环。通过在ensemble
初始化列表中调用正确的构造函数,可以一次完成所有操作:
ensamble(int i)
: list(i, T())
{}
这将导致创建向量以包含i
默认构造的项目。
至于使用向量创建ensemble
的实例,就像对任何其他类型一样:
// Creates an instance containing 100 integers
ensemble<int> e1(100);
// Create an instance containing 100 vectors of integer
ensemble<std::vector<int>> e2(100)