Шаблонный линейный поиск

Реализуйте функцию с именем 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, без шаблона, и он работает отлично. Я на самом деле озадачен тем, что не так с моим кодом.

-3

Решение

Не переназначать указатель. Удалить эту строку.

array = new t[arraySize];

То, что вы хотите вернуть, это индекс. Так что тип возвращаемого значения не должен быть t, Вернуть целочисленный тип.


Примечание:

Ваш учитель или ваша книга, вероятно, сказали вам создать динамический массив, используя new выражение. Вы, возможно, написали один в своей основной функции. Я должен отметить, что это противоречит общему совету в обществе из-за опасности утечки памяти, хотя у студентов обычно нет выбора. Если new должен быть использован, не забудьте дать ему соответствующий delete,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]