包含载体的载体或载体的模板

时间:2014-01-13 10:12:12

标签: c++ templates vector

我创建了一个模板来玩对象矢量。

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

1 个答案:

答案 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)