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

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

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

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

17.02.2013, 01:47. Просмотров 905. Ответов 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> (C++):

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

Visual c++ шаблон template <typename TT> - C++
пытаюсь разобраться с шаблонами, но выдает ошибку я даже не знаю куда смотреть https://github.com/Paladin3by/OOP template &lt;typename...

Для чего нужен с++? - C++
Я школьник, мне 16 лет, учусь в 10 классе, планирую поступить на факультет защиты информационных технологий. Сейчас начал изучать с++, не...

Для чего нужен define? - C++
Для чего нужен оператор define? например код #define N 20 /* сколько первых чисел посчитать */ void main(){ ...

Для чего нужен EOF? - C++
задание такое:написать программу, печатающую все вводимые символы в верхнем регистре, в строку выодится 16ричный и 8ричный код. #include...

Для чего нужен break? - C++
для чего нужен break?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M9ICHIK
63 / 63 / 13
Регистрация: 09.12.2012
Сообщений: 458
17.02.2013, 02:19 #2
Похоже на удержание значения в определенном диапазоне.
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 391
17.02.2013, 02:44  [ТС] #3
Я не понимаю.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.02.2013, 02:48 #4
Цитата Сообщение от pEntity Посмотреть сообщение
Но заменил просто на bool функцию,так как правильней.
нет, так не стало правильней
почитайте про шаблоны в c++
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 391
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);
Иначе мне бы пришлось писать доп код для приведения типа.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 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;
}
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 391
17.02.2013, 03:13  [ТС] #7
Спасибо. Извините,но не могу удержаться и спросить,почему вы используете эти египетские скобочки.

code {
}


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

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

code
{
}


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


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


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

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

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

Для чего нужен символ \b? - C++
для чего нужен символ \b??

Для чего нужен Sizeof - C++
Вот строка memcpy(pMatrPr, pMatr, sizeof(double) * n * m); Это копирование исходной матрицы в преобразованную А что такое...

Объясните для чего нужен конструктор - C++
Можете доступно объяснить для чего нужен конструктор, на примере этого кода. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Для чего нужен класс auto_ptr_ref? - C++
Здравствуйте, можно поконкретней, для чего нужен класс auto_ptr_ref? Спасибо.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.02.2013, 12:40
Ответ Создать тему
Опции темы

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