模板化线性搜索

时间:2016-09-12 01:31:03

标签: c++ arrays templates linear-search

实现一个名为find的函数,该函数将以下内容作为参数(按此顺序):

我们想要在数组中找到的对象 任意类型的动态数组 数组的大小 此函数应在数组中查找指定的元素,并返回元素的索引位置。如果该元素不存在,则该函数应返回-1。

我的代码是:

template<typename t>
t find(t objectInArray, t *array, int arraySize)
{
   array = new t[arraySize];

   for(int index = 0; index < arraySize; index++){
      if(array[index] == objectInArray){
         cout << index;
         return index;
       }
   }
     return -1;
}

我在main中使用int运行此代码,没有模板,它运行良好。我真的很困惑我的代码出了什么问题。

1 个答案:

答案 0 :(得分:1)

不要重新指定指针。删除此行。

array = new t[arraySize];

您想要返回的是索引。所以返回类型不应该是t。返回整数类型。

旁注:

您的老师或您的书可能会告诉您使用new表达式创建动态数组。您可能已在主函数中编写了一个。我必须指出,虽然学生通常没有选择,但由于存在内存泄漏的危险,这是违反社区的一般建议。如果必须使用new,请记住给它一个相应的delete