模板化线性搜索

Templated Linear Search

本文关键字:线性搜索      更新时间:2023-10-16

实现一个名为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运行这段代码,没有模板,它工作得很好。我真的很困惑我的代码出了什么问题。

不要重新分配指针。删除这一行

array = new t[arraySize];

你想返回的是一个索引。所以返回类型不应该是t。返回一个整数类型。


边注:

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