С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
344 / 264 / 63
Регистрация: 12.12.2012
Сообщений: 2,084
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте.

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);
}
Из книги я понял,что это шаблон,но для чего,я так и не смог разобрать,подскажите пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2013, 01:47
Ответы с готовыми решениями:

Для чего необходимо ключевое слово typename
Исходные данные. Есть класс CAppContainer, заголовочный файл appcontainer.h: #ifndef...

Visual c++ шаблон template <typename TT>
пытаюсь разобраться с шаблонами, но выдает ошибку я даже не знаю куда смотреть...

Для чего нужен Seed() и для чего его override?
Привет, ребята. Прочитал много разных статей про Seed(). И так и не могу понять зачем он нужен на...

Нужен шаблон для теста
loki, солнышко. Мне бы шаблончик для теста в Паскале. Пли-и-и-и-из. :oops:

10
63 / 63 / 23
Регистрация: 09.12.2012
Сообщений: 459
17.02.2013, 02:19 2
Похоже на удержание значения в определенном диапазоне.
0
344 / 264 / 63
Регистрация: 12.12.2012
Сообщений: 2,084
17.02.2013, 02:44  [ТС] 3
Я не понимаю.
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
17.02.2013, 02:48 4
Цитата Сообщение от pEntity Посмотреть сообщение
Но заменил просто на bool функцию,так как правильней.
нет, так не стало правильней
почитайте про шаблоны в c++
0
344 / 264 / 63
Регистрация: 12.12.2012
Сообщений: 2,084
17.02.2013, 02:54  [ТС] 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);
Иначе мне бы пришлось писать доп код для приведения типа.
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
17.02.2013, 03:06 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;
}
1
344 / 264 / 63
Регистрация: 12.12.2012
Сообщений: 2,084
17.02.2013, 03:13  [ТС] 7
Спасибо. Извините,но не могу удержаться и спросить,почему вы используете эти египетские скобочки.

code {
}


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

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

code
{
}


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


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


Темболее сейчас я уже прочитал две книги по С++ и там так же пишут,что не советуют писать,как вы. + Такого же мнения мои друзья и я сам.
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
17.02.2013, 03:19 8
Цитата Сообщение от pEntity Посмотреть сообщение
Я читал про стилистику кода и написано,что так пишут программисты,старого поколения и они уже не могут отвыкнуть.
Темболее сейчас я уже прочитал две книги по С++ и там так же пишут,что не советуют писать,как вы. + Такого же мнения мои друзья и я сам.
в-принципе это правильное мнение, но

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

Лично я тоже из той же секты. Даже из её радикального питонистского крыла, ратующего за синтаксическую вынужденность и достаточность отступов.
0
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
17.02.2013, 04:06 10
Цитата Сообщение от pEntity Посмотреть сообщение
Не красиво же.
По мне так вполне красиво. Таки это вопрос вкусовых предподчтений. Правда, если писать код не одному, то стоит писать в общем для всех стиле; ну, или если есть "общепринятый стандарт": например, в Яве переносить фигурную скобку - моветон.
0
BumerangSP
17.02.2013, 12:40     Для чего нужен шаблон <typename T>
  #11
 Комментарий модератора 
Товарищи, дальнейшие обсуждения, пожалуйста, только по теме.
0
17.02.2013, 12:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2013, 12:40
Помогаю со студенческими работами здесь

Нужен шаблон для газеты
Всем привет. Мне необходимо создать газета для конкурса со статьями и всем прочим( естественно,...

Для чего нужен C++?
Уважаемые, я учу C++ уже 7 лет, зачем нужен C++?

Для чего нужен this?
Не могу понять в чем разница Name = name; ////// this.Name=name;

Для чего нужен C#?
Для чего нужен C#? На чем луче писать интернет-приложения и Online игры?


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

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