![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
ключевые слова: специализация шаблона -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Это об чем? Мне действительно непонятна реализация такого шаблона. Если я хочу написать свой шаблонный класс, который по-разному бы реагировал на тип в аргументе? Например пишу шаблон:
И если я хочу, чтобы мой класс по-разному отреагировал на конкретный тип данных, то каким путем это решено в vector<bool>? Повторяю: мне просто занятно стало. Это действительно как-то решено или это пожелания Герба Саттера? |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Anikmar,
Это сообщение отредактировал(а) MAKCim - 19.1.2007, 21:24 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
![]() мне тоже, но я не расстраиваюсь ![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
А вы туда заглядывали? Там достаточно много всего наверчено, я туда естественно заглянул перед тем как отправить свой пост. Если есть обсуждаемая тема, и есть люди, которые уже в этом разбирались - какой смысл перелопачивать кучу хедеров? Это чисто познавательный интерес - я не доходил в реализации собственных шаблонных классов до "перегрузки" с точки зрения типов - форум для того и существует, чтобы делиться опытом. Вариант определения шаблона, показанный в посте MAKCim меня просветил (я так ни разу не делал). НО... Тогда получается дублирование всех методов в двух разных шаблонах для обеспечения работы с конкретными типами данных... На самом деле в векторе немного не так сделано - там маленький служебный класс, отвечающий за выделение памяти и обращение к конкретному элементу видимо отрабатывает что-то отдельное для bool. Но сходу не нашел где. ИМХО Я и так не особый любитель STL. Но посмотрев конкретику реализации vector у меня появились сомнения, что использование STL приведет к ускорению работы программы и к экономии памяти... Вот к экономии времени на исходный код - возможно. |
|||
|
||||
Rockie |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
все зависит от того кто и как пишет то или иное.
Вот и были люди(и щас есть) которые в свое время очень долго и нудно разбирались, создавая STL и добиваясь наилучшей реализации, причем по многим критериям. -------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
||||
|
|||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
![]() ![]() к ускорению по сравнению с чем? экономия времени по сравнению с чем? недостаток любой универсализации - дополнительные расходы ресурсов, плюсы известны. невозможно определить эффективность универсального подхода (опять таки по сравнению с другим методом) не зная условия задачи |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
На круг - по сравнению с "ручным" написанием. В большинстве случаев ведь не надо самому реализовывать низкоуровненвые алгоритмы и т.п. - для этого, например, придумана IDE - которая служит для ускорения написания интерфейса и многих других вещей. Я ни коим образом не хочу принизить достоинства STL - ее писало очень много народу и очень долго. Этот вопрос я поднял чисто из интереса самообразования - из цикла "Как оно сделано" - интересно все-таки. Любой универсализм естественно тратит рессурсы. (Взять, например, технологию COM). Конкретно задачи, указанной в данном топике, vector<bool> подоходит как нельзя лучше, не знаю на счет критерий скорости (нужна ли там супер высокая скорость или нет). А по поводу моего личного "прохладного" отношения к STL - это чисто ИМХО. Видимо сказывается то, что начинал я на очень скромных рессурсах - приходилось, в основном, программировать контроллеры АСУ, а там рессурсов было ну очень мало. Я не говорю про простоту класса vector. Я говорю про подход, указанный MAKCimом, когда он мне объяснил как разделить шаблоны для разных типов. Если делать разные объявления vectora для разных типов - было бы совсем соложно. Разработчики несколько упростили и вынесли типозависимые участки в маленькие служебные классы с 2 методами (их так проще сопровождать). Резюме: век живи - век учись. Правда все равно дураком помрешь ![]() |
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
Anikmar, виноват, не внимательно прочитал ваш пост, теперь понял о чем речь. Мои извинения. не в обиду, вспоминается герой рассказа Д. Лондона "Любовь к жизни", который довольно долгое время голодал, и потом когда его подобрали собирал сухари под матрацем ![]() ![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
||||
|
||||
The Thing |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 286 Регистрация: 6.9.2004 Репутация: нет Всего: 3 |
Специально для автора темы потратил 15 минут.
Массив рассматривается как непрерывный поток данных с лево направо. Вывод на экран до и после вырезания битов: ------------------------------- 11101100 11100000 11101100 11100000 00100000 11101100 11111011 11101011 11100000 00100000 11110000 11100000 11101100 11110011 11101100 11101111 10111110 10111110 00000010 00001111 00001110 00001110 11001111 00110000 -------------------------------
А всем вышекомментирующим: не надо лениться написать три строчки кода. Вся программа заключается в функциях Get и SetBit. ![]() Добавлено @ 16:49 счет битов с нуля -------------------- Правильность работы программы зависит от двух велечин. В нужном месте должны стоять нолик и еденичка. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |