Реализуйте функцию с именем 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;
}
Я запустил этот код в основном используя int, без шаблона, и он работает отлично. Я на самом деле озадачен тем, что не так с моим кодом.
Не переназначать указатель. Удалить эту строку.
array = new t[arraySize];
То, что вы хотите вернуть, это индекс. Так что тип возвращаемого значения не должен быть t
, Вернуть целочисленный тип.
Примечание:
Ваш учитель или ваша книга, вероятно, сказали вам создать динамический массив, используя new
выражение. Вы, возможно, написали один в своей основной функции. Я должен отметить, что это противоречит общему совету в обществе из-за опасности утечки памяти, хотя у студентов обычно нет выбора. Если new
должен быть использован, не забудьте дать ему соответствующий delete
,
Других решений пока нет …