-3

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

我们要在数组中找到的对象 ANY 类型的动态数组 数组的大小 此函数应在数组中查找指定的元素并返回该元素的索引位置。如果元素不存在,该函数应返回 -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;
}

我使用 int 在 main 中运行了这段代码,没有模板,它运行良好。我实际上很困惑我的代码有什么问题。

4

1 回答 1

1

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

array = new t[arraySize];

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


边注:

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

于 2016-09-12T01:34:54.190 回答