Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
3 / 3 / 1
Регистрация: 29.06.2013
Сообщений: 107
1

Шаблонные функции в C++

29.10.2014, 14:21. Показов 1125. Ответов 6
Метки нет (Все метки)

Каждый раз когда вижу код, который должен быть простым и понятным, я понимаю его немного хуже.
Вот наш код:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
template <typename T, size_t N>
size_t arrayCount(const T(&)[N]) {
    return N;
}
 
int main()
{
    
    int a[5];
    cout << arrayCount(a) << endl;
    
    
    getch();
    
    return 0;
}

Вроде всё понятно, что T становится int, а N принимает количество элементов.

Но как она срабатывает и где ещё можно использовать шаблонные функции, которые неявно принимают типы данных?

Добавлено через 3 минуты
Кстати я не о таких шаблонах:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
template <typename T>
void test(const T variable) {
     return N;
}


а о шаблонах, что принимают больше одного пользовательского типа.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2014, 14:21
Ответы с готовыми решениями:

Шаблонные функции
Помогите, пожалуйста, реализовать шаблонную функцию, которая переставляет элементы в массиве

Шаблонные функции
Чет не получается написать шаблонную функцию. func.h template &lt;class T&gt; T strnstr (T str, T...

Шаблонные функции
1) Написать шаблонную функцию для нахождения минимального из трех передаваемых чисел (для чисел...

Шаблонные функции
Помогите, пожалуйста, реализовать шаблонную функцию определения, есть ли число в массиве

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
6
6954 / 6004 / 2726
Регистрация: 14.04.2014
Сообщений: 25,655
29.10.2014, 14:24 2
А ты проверял эту программу? Зачем массив, если возврат N?
0
3 / 3 / 1
Регистрация: 29.06.2013
Сообщений: 107
29.10.2014, 14:29  [ТС] 3
nmcf, кто тут пытается попросить помощи?)
С этой функцией я узнаю сколько элементов в массиве.
Мне лишь интересно как это работает и где ещё можно такое использовать?

Не нужно спрашивать зачем и как там что. Я не пишу целое приложение, а пытаюсь узнать то, что мне может нужно будет при написании приложений.
0
6954 / 6004 / 2726
Регистрация: 14.04.2014
Сообщений: 25,655
29.10.2014, 14:34 4
Я спросил, рабочий это пример или ты сам придумал? Размер массива и шаблон - какая связь? Шаблон используется, чтобы можно было не указывать явно типы.
0
3 / 3 / 1
Регистрация: 29.06.2013
Сообщений: 107
29.10.2014, 14:37  [ТС] 5
nmcf, конечно рабочий. Даже стандарте С++ заложено.
stdlib.h
0
Миниатюры
Шаблонные функции в C++  
1453 / 790 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
29.10.2014, 15:29 6
Цитата Сообщение от __SOKOL__ Посмотреть сообщение
Но как она срабатывает
Шаблон - это всего лишь макет по которому компилятор генерирует необходимые определения функций, классов и прочего. На этапе компиляции компилятор анализирует переданный аргумент в функцию arrayCount и на основании этого строит новую функцию уже с вполне определенными параметрами типы которых были выведены с аргумента(ов).

Добавлено через 2 минуты
Цитата Сообщение от nmcf Посмотреть сообщение
Размер массива и шаблон - какая связь
А как ты предлагаешь вывести размер массива переданного функции?

Добавлено через 1 минуту
Хотя, на этот вопрос уже есть ответ: Распространенные ошибки
0
6954 / 6004 / 2726
Регистрация: 14.04.2014
Сообщений: 25,655
29.10.2014, 15:31 7
А ты как предлагаешь? Передав его изначально в шаблон, что ли? Какой в этом смысл?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.10.2014, 15:31

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Шаблонные функции
Такой код работает. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; using namespace...

Шаблонные функции
Любимой нужно, это свято... Поэтому прошу помощи... Перегрузить операторы &gt;, &lt;, == для класса...

Шаблонные функции
С помощью http://ru.wikipedia.org/wiki/Шаблоны_C%2B%2B пытался написать программу с шаблонной...

Шаблонные функции
Доброго времени суток. Есть шаблонная функция(двоичный сумматор прямого кода): template &lt;class T&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.