Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Stl: в чем плюсы шаблонов? 
:(
    Опции темы
Alca
Дата 26.5.2009, 18:01 (ссылка)   | (голосов:14) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Stl: в чем плюсы шаблонов?


--------------------
PM WWW ICQ Skype Jabber   Вверх
andrew_121
Дата 26.5.2009, 19:49 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Во всем. На буст посмотри.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
Alca
Дата 26.5.2009, 20:58 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Во всем.

 smile 


--------------------
PM WWW ICQ Skype Jabber   Вверх
azesmcar
Дата 26.5.2009, 21:12 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Alca @  26.5.2009,  18:01 Найти цитируемый пост)
в чем плюсы шаблонов? 

они классные smile 

Что значит в чем плюсы? Шаблоны - это полиморфизм времени компиляции. Плюс в том что грамотно используя шаблоны можно избежать написания лишнего кода (т.е. возложить эту обязанность на плечи компилятора)

Это сообщение отредактировал(а) azesmcar - 26.5.2009, 21:14
PM   Вверх
nerezus
Дата 26.5.2009, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Минусы это - они лишат тебя удовольствия написания сотен строк кода, заменив это всего лишь парой строк.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
GoldFinch
Дата 26.5.2009, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



тут недавно советовали вместо 1 шаблона перегрузку юзать, для всех возможных типов...
PM MAIL ICQ   Вверх
Dmi3ev
Дата 26.5.2009, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 1
Всего: 41



Тупой вопрос...   smile 
А в чем минусы? 


--------------------

PM MAIL   Вверх
mrbrooks
Дата 27.5.2009, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



smile 

плюсы в кошерности.

зы. ыыы.
PM MAIL   Вверх
math64
Дата 27.5.2009, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Минусы в том, что хотя ты пишешь код один раз, при каждом использовании шаблона с новым типом, его код дублируется и размер исполняемого файла растёт.
PM   Вверх
Lazin
Дата 27.5.2009, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(math64 @  27.5.2009,  08:04 Найти цитируемый пост)
Минусы в том, что хотя ты пишешь код один раз, при каждом использовании шаблона с новым типом, его код дублируется и размер исполняемого файла растёт. 

а когда пишешь разный код для разных типов не растет?
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 27.5.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Lazin @  27.5.2009,  08:44 Найти цитируемый пост)
а когда пишешь разный код для разных типов не растет? 

а зачем писАть разный код для разных типов?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Alca
Дата 27.5.2009, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

Тупой вопрос... 

 smile

Добавлено через 2 минуты и 3 секунды
Минус в том, что если нет инстанцирования шаблона, то компилер не будет проверять его синтаксис.


--------------------
PM WWW ICQ Skype Jabber   Вверх
Lazin
Дата 27.5.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(MAKCim @  27.5.2009,  08:58 Найти цитируемый пост)
а зачем писАть разный код для разных типов?

вот за этим
Код

class uber_object
{
    char big_field[0x1000];
    ...
};

class small_object
{
    char small_field[8];
    ...
};

std::list<uber_object*> lst1;
std::list<small_object> lst2;

список может хранить указатели на большие объекты, в то время как маленькие объекты можно хранить по значению
предложи такую реализацию списка(без шаблонов), которая будет работать так-же как в данном примере

Добавлено через 3 минуты и 47 секунд
Цитата(Alca @  27.5.2009,  09:19 Найти цитируемый пост)
Минус в том, что если нет инстанцирования шаблона, то компилер не будет проверять его синтаксис

вот именно синтаксис он и будет проверять для всех шаблонов(правда visual studio это не делает)

Это сообщение отредактировал(а) Lazin - 27.5.2009, 09:23
PM MAIL Skype GTalk   Вверх
math64
Дата 27.5.2009, 09:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



Цитата(Lazin @  27.5.2009,  08:44 Найти цитируемый пост)
а когда пишешь разный код для разных типов не растет?

Растёт - но ты сам видишь что растёт, и чтобы он не рос принимешь меры, например для двух разных типов создаёшь обший базовый класс и переносишь общий код в него. А при применении шаблонов можешь об этом и не задумываться.
Например, нужен тебе список для хранения типов A, B, C, D, E, F ...
Ты пишешь:
Код

list<A> list_a;
list<B> list_b;
list<C> list_c;
list<D> list_d;
list<E> list_e;
list<F> list_f;

Код шаблона list размножился 6 раз
А в этом слечае:
Код

class voidlist : public list<void*> {
voidlist();
voidlist(const voidlist&);
virtual ~voidlist();
voidlist& operator = (const voidlist&);
};

template <class T> ptrlist : public voidlist {
public:
 T* front() { return (T*)voidlist::front(); }
 void push_front(T* t) ( voidlist::push_front((void*)t); }
 ...
};
ptrlist<A> list_a;
ptrlist<B> list_b;
ptrlist<C> list_c;
ptrlist<D> list_d;
ptrlist<E> list_e;
ptrlist<F> list_f;

хоть и применены шаблоны, но основной код шаблона не размножается.

Это сообщение отредактировал(а) math64 - 27.5.2009, 09:29
PM   Вверх
Alca
Дата 27.5.2009, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50



Цитата

правда visual studio это не делает

не делает  smile

Добавлено через 3 минуты и 45 секунд
А если функция может использовать только один тип данных, стоит ли использовать шаблон?


--------------------
PM WWW ICQ Skype Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.