![]() |
|
Модераторы: bsa |
![]()
|
|
| try_to_get |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 426 Регистрация: 19.3.2007 Где: Россия Репутация: нет Всего: 2 |
Что такое шаблоны?
Что из себя представляют шаблоны функций и шаблоны классов? Кому не трудно напишите, в общем, и кратко выше указанные вопросы. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
||||
|
||||
| try_to_get |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 426 Регистрация: 19.3.2007 Где: Россия Репутация: нет Всего: 2 |
Thanks!
|
|||
|
||||
| dimanwv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.3.2012 Репутация: нет Всего: нет |
такой вопрос.
template <typename T> void show(const char *msg,vector<T> vect) { cout<<msg; for(unsigned i=0;i<vect.size();++i) cout<<vect[i]<<" "; cout<<"\n"; } vector<int> copied(5); show<int>("Vector have been sorted :",copied);// здесь в угловых скобках указываем тип. /////////////////////////////////////////////////////////// template<typename InIter> void show_range(const char* msg,InIter start,InIter end) { InIter itr; cout<<msg; for(itr=start;itr!=end;++itr) cout<<*itr<<" "; cout<<endl; } vector<double> trans_v; for(trans_i=0;trans_i<10;++trans_i) trans_v.push_back(static_cast<double>(trans_i)); cout<<"The demonstration \"transform\" algorithm using one vector.\n"; show_range("The initial content of \"trans_v\" is :\n",trans_v.begin(),trans_v.end());//здесь в не применяем угловые скобки почему? |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
dimanwv, для функций почти никогда не нужно указывать тип инстанцирования явно. А вот для классов - обязательно. Компилятор сам "сообразит" какой тип ты имел в виду. Если же тип не подойдёт, то компилятор ругнётся, как, впрочем, если ты явно укажешь несоответствующий тип.
Кстати, в твоём случае для функции show необязательно указывать тип. http://liveworkspace.org/code/96f0209d9264...328424664f8c7d7 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| dimanwv |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 30.3.2012 Репутация: нет Всего: нет |
Спасибо. Понял.
|
|||
|
||||
| sergioK1 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
1) где разница между двумя примерами ? 2) зачем тут вообще template ?
|
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
ты в танке? почему твой код не работает?: http://liveworkspace.org/code/c46ca9cff008...faba34b20f0d13f |
|||
|
||||
| sergioK1 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
мой работает, твое изменение - нет , хочешь добавить чего пользуй визитор , не совсем точьно выразился, в таких случаях лучше пользовать void* а в самой функции делать фактори на тип , так багу в перегруженом << поймать легче, ну и размер кода поменьше xм .. может у меня привычка многолетняя из других языков без шаблонов писать (там их просто небыло) но мне кажеться она хорошая , шаблоны они несколько для другого Но это уже не для новичков, раздела парадигмы програмирования на форуме к сожалению нет , а это для туда классика IMHO. |
||||
|
|||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
sergioK1, функция show из первого примера умет распечатывать любой вектор, элементы которого умеет принимать оператор << ostream'а
Даже из таких элементов
http://liveworkspace.org/code/4faa30d01377...8e006daac2e2a39 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| sergioK1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Я о другом Кстати, в твоём случае для функции show необязательно указывать тип. http://liveworkspace.org/code/96f0209d9264...328424664f8c7d7 запутался какой прмер первый , какой второй ? где он указан и где можно не указать ? Это сообщение отредактировал(а) sergioK1 - 31.3.2012, 13:30 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
sergioK1, ты когда-нибудь перестанешь на всех форумах рунета постить бессмысленные вопросы?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
sergioK1, действительно, сумбур какой-то...
Можно не указывать тип практически всегда. Компилятор сам разберётся какой тип нужен. Вот вариант, когда тип нужно указывать явно http://liveworkspace.org/code/b2ce6674e590...b979d7270dc493d -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| sergioK1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
дайте ссылку на стандард языка, только не на последний, Это сообщение отредактировал(а) sergioK1 - 31.3.2012, 19:41 |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |