实现一个名为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运行此代码,没有模板,它运行良好。我真的很困惑我的代码出了什么问题。
答案 0 :(得分:1)
不要重新指定指针。删除此行。
array = new t[arraySize];
您想要返回的是索引。所以返回类型不应该是t
。返回整数类型。
旁注:
您的老师或您的书可能会告诉您使用new
表达式创建动态数组。您可能已在主函数中编写了一个。我必须指出,虽然学生通常没有选择,但由于存在内存泄漏的危险,这是违反社区的一般建议。如果必须使用new
,请记住给它一个相应的delete
。