|
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 15
|
|
Частичная специализация. Контейнеры16.12.2012, 00:06. Показов 3229. Ответов 15
Метки нет (Все метки)
Всем привет, пытаюсь разобраться с шаблонами:
Требуется создать функцию печати для stack, queue, priority_queue. Все было бы супер, но не вижу общей для всех трех контейнеров функции доступа к элементам. Для стека и приоритетной очереди это top(), для очереди front() и back(). Получается, для очереди нужна специализация. Но возникает вопрос, каким образом задавать очередь при специализации, поскольку она сама является шаблоном, параметризованным типом контейнера и типом обрабатываемых элементов. Частичная специализация для функций, насколько мне известно, не работает(или я неправа?). Подскажите, пожалуйста, способ реализации такого принта или ткните носом в тему, где освещалась подобная задача.
0
|
|
| 16.12.2012, 00:06 | |
|
Ответы с готовыми решениями:
15
Частичная специализация шаблона Частичная специализация шаблона Частичная специализация шаблона функции |
|
64 / 64 / 33
Регистрация: 12.08.2012
Сообщений: 151
|
|
| 16.12.2012, 00:59 | |
|
=> iterator
0
|
|
|
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 15
|
|
| 16.12.2012, 01:07 [ТС] | |
|
И на что этот итератор будет "смотреть"? Как выставить его на первый элемент контейнера? Да и не работают вроде со стеками итераторы.
0
|
|
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
| 16.12.2012, 01:08 | ||||||
|
похоже речь идет о свободной функции.
и возможно частичная специализация вам и не нужна, потому как для печати вроде бы как один параметр шаблонный только - это тип контейнера. в этом случае речь идет о полной специализации, но и она не сильно нужна. для функция есть еще такая штука, как перегрузка. и вот пример именно сперегрузками, а не специализацией:
1
|
||||||
|
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 15
|
||||||
| 16.12.2012, 01:17 [ТС] | ||||||
|
Спасибо, но, как мне кажется, не совсем то.
Задание дословно "Напишите шаблон функции для вывода значений stack, queue, priority_queue". То есть по видимому нужен механизм, позволяющий использовать единый синтаксис для печати каждой из перечисленных сущностей. Нечто вроде:
0
|
||||||
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|||||||||||
| 16.12.2012, 01:20 | |||||||||||
|
а вот это разве не единый синтаксис?
можно переписать так:
0
|
|||||||||||
|
64 / 64 / 33
Регистрация: 12.08.2012
Сообщений: 151
|
|
| 16.12.2012, 01:22 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 15
|
||||||
| 16.12.2012, 01:30 [ТС] | ||||||
|
DU,
да, все верно, спасибо! Не увидела сначала перегруженную функцию
0
|
||||||
|
|
||||||||
| 16.12.2012, 01:53 | ||||||||
1
|
||||||||
|
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 15
|
|
| 16.12.2012, 11:12 [ТС] | |
|
Avazart,
спасибо за ответ! То есть в параметре очередь, являющаяся шаблоном от двух параметров, ( например, queue<int, list<int>>), может быть упомянута в функции как шаблон одного параметра? (queue<T>). Это было бы удобно. Но у меня 2005 студия такой код не проглотила, ругается: "error C2995: 'void Print(Ta &)' : function template has already been defined" И действительно, разве такой синтаксис используется при специализации? Больше похоже на два разных шаблона с одинаковым списком параметров. Мб дело в престарелом компиляторе? Помогите, пожалуйста, разобраться.
0
|
|
|
|
|||||||
| 16.12.2012, 13:12 | |||||||
|
Ну я позабыл void понаписывать в возвращаемые значения
Добавлено через 1 минуту
1
|
|||||||
|
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 15
|
|
| 16.12.2012, 13:58 [ТС] | |
|
void я добляла, дело не в нем. Буду пробовать в VS 2010, спасибо
0
|
|
|
|
||||||
| 16.12.2012, 14:22 | ||||||
|
Два раза JlightenDev_C++ сказал про итераторы. Нееет, мы будем писать костыли через top, front и прочую ерунду.
1
|
||||||
|
|
||
| 16.12.2012, 15:20 | ||
Собственно я так и не пойму как отличить одно от другого ...
1
|
||
| 16.12.2012, 15:20 | |
|
Помогаю со студенческими работами здесь
16
Каким стандартом введена частичная специализация шаблона функции? Специализация конструктора: Специализация шаблона Явная специализация Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|