帮助模板mergesort功能

时间:2009-11-25 21:23:39

标签: c++ mergesort

  

错误C2065:'temp':未声明的标识符

我知道对于“temp”我需要声明数组的类型是int temp []但是如果我不知道它是什么...它可以是int或{{1 }}或string ..如何创建临时数组而不指定它应该是什么

这是我的代码:

double

2 个答案:

答案 0 :(得分:3)

在模板函数或类的上下文中,模板参数是“真实”类型。 temp所需的类型仅为T*

更新

由于T是数组类而不是元素类型,因此您实际上需要T::value_type*作为临时值。

答案 1 :(得分:2)

temp应该是一系列临时物品吗?那听起来像你需要做的事情:

typedef typename T::value_type U;
U *temp = new U[count];

完成后不要忘记delete[]

另外,作为旁注,更多的c ++ - 是要做的事情是使用指针/迭代器。这样,您的算法将适用于更多类型的容器,而不仅仅是为数组建模的东西。

此外,正如Tim Sylvester建议的那样,您可以使用std::vector<U> temp(count)为您管理内存。