Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
1

В чем смысл создания шаблона с заранее известным передаваемым типом

24.10.2012, 09:01. Показов 672. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Видел шаблоны типа:

C++
1
2
3
4
template<int N>
struct fact{
   static const int v = fact<n-1>::v * n;
};
Объясните мне, в чем смысл создавать шаблон с заранее известным передаваемым типом?
Мне казалось, что шаблоны существуют для того, что бы сделать передаваемый тип любым.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2012, 09:01
Ответы с готовыми решениями:

В чём смысл создания ненужных конфигураций?
Персональный компьютер - устройство для личных нужд (что следует из названия), соответственно,...

Цикл с заранее известным числом повторений
Помогите, пожалуйста, написать программу, решающую следующую задачу: дано натуральное число m &lt;= 7....

Цикл с заранее известным числом повторений
Помогите исправить программу { Программа решает следующую задачу: Дано целое N. Найти сумму и...

В чем разница между типом функции и типом возвращаемого значения?
Читаю статью https:// code-live. ru/post/cpp-functions/ (ссылку изменил дабы не делать рекламу) ...

12
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
24.10.2012, 09:12 2
http://www.solarix.ru/for_deve... ming.shtml
там же есть ссылка http://www.solarix.ru/for_deve... rial.shtml
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
24.10.2012, 09:22  [ТС] 3
Kastaneda, хм. То есть через шаблоны можно передавать константы?
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
24.10.2012, 09:38 4
Ну да, например класс std::array<class T, size_t N>
Пример создания объекта:
C++
1
std::array<int, 10> arr; // создаем массив int из 10 элементов
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
24.10.2012, 09:55  [ТС] 5
Kastaneda, но должна же быть разница между: передать константу через шаблон и как аргумент?

Через шаблон все будет быстрее, так?
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
24.10.2012, 10:01 6
Цитата Сообщение от Kgfq Посмотреть сообщение
Через шаблон все будет быстрее, так?
Через шаблон - на этапе компиляции, как аргумент - на этапе выполнения. Это разные вещи.
Я так понял имеется ввиду аргумент функции?
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
24.10.2012, 10:03 7
Объясните мне, в чем смысл создавать шаблон с заранее известным передаваемым типом?
Шаблону всегда передается заранее известный параметр, так как шаблон генерируется компилятором на основе типов и значений параметров.
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
24.10.2012, 10:04  [ТС] 8
Kastaneda, да, имеется ввиду как аргумент функции.

В итоге получится, что шаблон использует переданное значение на этапе компиляции, а это быстрее, чем если бы данные передавались во время исполнения. Так?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
24.10.2012, 10:33 9
Kgfq, Что значит "быстрее"? Этап компиляции и этап выполнения принципиально разные вещи
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
24.10.2012, 10:36  [ТС] 10
ForEveR, мне казалось, программисты ориентируются на скорость работы программы у пользователя
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
24.10.2012, 10:54 11
Kgfq, Ну как бэ, если размышлять так - то естественно работает программа быстрее.
0
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
24.10.2012, 11:05  [ТС] 12
ForEveR, Вы размышляете иначе?
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
24.10.2012, 12:08 13
Kgfq, Я разработчик. Мне так же важно сколько времени программа собирается и переносить любые вычисления, которые могут выполниться во время компиляции на этот этап - это конечно круто, однако время сборки увеличивается прямо пропорционально. Собственно, попробуйте использовать boost::spirit и увидите, сколько ваш исходный код будет компилироваться. Для маленькой программы - не критично, а вот собирать некий мета-проект в тысяч 10 файлов - удовольствие ниже среднего.
0
24.10.2012, 12:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2012, 12:08
Помогаю со студенческими работами здесь

Из двух запросов в один по заранее известным отношениям
Как пишет читатель в соседней теме &quot;намучившись с fk&quot; я выкосил все innodb прелести и завел таблицу...

Отсутствует сопоставление типа объекта System.Drawing.Bitmap с известным собственным типом управляемого поставщика
Здравствуйте! Уже писал сюда днём. Возникла новая проблема, решение которой в гугле не находится....

Параметризация шаблона значением, а не типом (а-ля С++)
Привет, с прошедшим вас:) Незнаю Java поэтому решил заполнить этот пробел в знаниях. Понятно,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru