Как сделать так, чтобы в одной и той же функци осуществлялась работа с разными типами данных?

Подскажите, как сделать так, чтобы в функции осуществлялась работа с разными типами данных. Есть функция для создания двумерного массива и заполнения его случайными числами. Но мне нужно сделать так, чтобы, например, при первом вызове функции создался массив с элементами типа int, а при втором вызове массив с элементами типа double. Как можно это реализовать?


Ответы (1 шт):

Автор решения: maestro

Шаблоны - весьма часто используемый аспект языка c++, и даже его стандартная библиотека называется STL - Standard Template Library. Так что на вопрос "насколько правильный такой подход" можно ответить - что да, правильный.

Вы в вопросе упомянули:

чтобы, например, при первом вызове функции создался массив с элементами типа int, а при втором вызове массив с элементами типа double

Так нельзя. Тип шаблона определяется не тем, каким по счёту разом вызвана функция, а типами переданных в неё параметров.

template<typename T>
void fillRandom(T *arr, size_t size)
{
    for (size_t i = 0; i < size; ++i)
    {
        arr[i] = 42; //думаю, как генерировать случайные числа различных типов, разберётесь сами
    }
}

Вызывать так:

float *a = new float[100];
fillRandom(a, 100); //В старых версиях C++ потребуется такая запись: fillRandom<float>(a, 100);
→ Ссылка