Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
#1

Для чего нужен шаблон <typename T> - C++

17.02.2013, 01:47. Просмотров 854. Ответов 10
Метки нет (Все метки)

Здравствуйте.

C++
1
2
3
4
template <typename T> T CLAMP(const T& value, const T& low, const T& high) 
{
    return (value < low) ? low : ((value > high) ? high : value);
}
Из книги я понял,что это шаблон,но для чего,я так и не смог разобрать,подскажите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2013, 01:47     Для чего нужен шаблон <typename T>
Посмотрите здесь:

Для чего нужен тип void? C++
Для чего нужен define? C++
C++ Для чего нужен символ \b?
Прототип функции.Для чего нужен C++
C++ Для чего нужен EOF?
Для чего нужен с++? C++
C++ Для чего нужен указатель vptr?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M9ICHIK
63 / 63 / 13
Регистрация: 09.12.2012
Сообщений: 458
17.02.2013, 02:19     Для чего нужен шаблон <typename T> #2
Похоже на удержание значения в определенном диапазоне.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
17.02.2013, 02:44  [ТС]     Для чего нужен шаблон <typename T> #3
Я не понимаю.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.02.2013, 02:48     Для чего нужен шаблон <typename T> #4
Цитата Сообщение от pEntity Посмотреть сообщение
Но заменил просто на bool функцию,так как правильней.
нет, так не стало правильней
почитайте про шаблоны в c++
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
17.02.2013, 02:54  [ТС]     Для чего нужен шаблон <typename T> #5
Цитата Сообщение от alex_x_x Посмотреть сообщение
нет, так не стало правильней
почитайте про шаблоны в c++
Я поэтому и подчистил пост,так как ляпнув не подумав. Если бы true \ false возвращало,тогда я был бы прав )

Друг подсказал,это шаблон,для приведения типов.
C++
1
2
float f = 1.0;
f = CLAMP(f, 0.25, 1.25);
C++
1
2
int i = 99;
i = CLAMP(i, 17, 56);
Иначе мне бы пришлось писать доп код для приведения типа.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.02.2013, 03:06     Для чего нужен шаблон <typename T> #6
Цитата Сообщение от pEntity Посмотреть сообщение
Иначе мне бы пришлось писать доп код для приведения типа.
да, это были бы макросы на си

C
1
#define CLAMP(value, low, high) (value < low) ? low : ((value > high) ? high : value)
(либо в виде )
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#define DECLARE_CLAMP(type)                                    \
type _clamp_ ## type (type value, type low, type high) {             \
  return (value < low) ? low : ((value > high) ? high : value); \
}
 
#define CLAMP(type, value, low, high) _clamp_ ## type (value, low, high)
 
DECLARE_CLAMP(int)
 
int main () {
   CLAMP(int, 1, 2, 3);
   return 0;
}
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 373
17.02.2013, 03:13  [ТС]     Для чего нужен шаблон <typename T> #7
Спасибо. Извините,но не могу удержаться и спросить,почему вы используете эти египетские скобочки.

code {
}


Не красиво же. И читать не так приятно.

Куда лучше когда так:

code
{
}


Это выглядит более правильно,так более приятно и легче читаемо..


Я читал про стилистику программирования и написано,что так пишут программисты,старого поколения и они уже не могут отвыкнуть.


Темболее сейчас я уже прочитал две книги по С++ и там так же пишут,что не советуют писать,как вы. + Такого же мнения мои друзья и я сам.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.02.2013, 03:19     Для чего нужен шаблон <typename T> #8
Цитата Сообщение от pEntity Посмотреть сообщение
Я читал про стилистику кода и написано,что так пишут программисты,старого поколения и они уже не могут отвыкнуть.
Темболее сейчас я уже прочитал две книги по С++ и там так же пишут,что не советуют писать,как вы. + Такого же мнения мои друзья и я сам.
в-принципе это правильное мнение, но

1) зависит от code-style'a проекта, в котором вы работаете/учавствуете (даже если что-то более красивей/православней/удобней, но выбивается из общего стиля - это зло)
2) зависит от языка, например в java и perl'e это общепринятый способ выставления брэкетов. Я на самом цпп в последнее время почти не пишу, вот и привык к чужим кодстайлам
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
17.02.2013, 03:52     Для чего нужен шаблон <typename T> #9
Цитата Сообщение от pEntity Посмотреть сообщение
Извините,но не могу удержаться и спросить,почему вы используете эти египетские скобочки.
Это один из известных холиворов. Причём мнения есть разные. Тот же Стив Макконел со своим "Совершенным кодом" из секты оставляющих скобку на той же строке. У каждого из стилей есть свои преимущества.

Лично я тоже из той же секты. Даже из её радикального питонистского крыла, ратующего за синтаксическую вынужденность и достаточность отступов.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
17.02.2013, 04:06     Для чего нужен шаблон <typename T> #10
Цитата Сообщение от pEntity Посмотреть сообщение
Не красиво же.
По мне так вполне красиво. Таки это вопрос вкусовых предподчтений. Правда, если писать код не одному, то стоит писать в общем для всех стиле; ну, или если есть "общепринятый стандарт": например, в Яве переносить фигурную скобку - моветон.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2013, 12:40     Для чего нужен шаблон <typename T>
Еще ссылки по теме:

C++ Виртуальный деструктор, для чего нужен?
Для чего нужен Sizeof C++
C++ Для чего нужен break?
Для чего нужен класс auto_ptr_ref? C++
C++ Для чего необходимо ключевое слово typename

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

Или воспользуйтесь поиском по форуму:
BumerangSP
17.02.2013, 12:40     Для чего нужен шаблон <typename T>
  #11
 Комментарий модератора 
Товарищи, дальнейшие обсуждения, пожалуйста, только по теме.
Yandex
Объявления
17.02.2013, 12:40     Для чего нужен шаблон <typename T>
Ответ Создать тему
Опции темы

Текущее время: 01:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru