![]() |
|
Модераторы: bsa |
![]()
|
|
| ChipNDale |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2010 Репутация: нет Всего: 1 |
Приветствую.
Хочется реализовать примерно такой функционал: есть шаблон класса, который при создании инициализируется некоторым контейнером и возвращает значения из этого контейнера по некоторым своим правилам. Для хранения элементов будем использовать вектор, при этом хочется иметь возможность инициализировать любым контейнером. Выглядит как-то так:
Не нравится необходимость явно указывать тип итератора при создании объекта. Можно ли как-нибудь корректно уйти от этого? |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Если не нужно хранить в классе итератор, то достаточно сделать конструктор шаблонным:
http://liveworkspace.org/code/3Bl1rp$2 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Вот твой исправленный вариант (на случай если все таки нужно).
|
|||
|
||||
| ChipNDale |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2010 Репутация: нет Всего: 1 |
borisbn, Вариант с шаблонным конструктором подходит, спасибо.
azesmcar, Спасибо, но в таком варианте все равно присутствует избыточность при использовании класса, от которой хочется уйти. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
| ChipNDale |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2010 Репутация: нет Всего: 1 |
Не хочется иметь даже возможность определить больше параметров, чем необходимо. А необходим по сути единственный - тип объектов. Внутри все равно всегда будет контейнер оптимальный для обращения к элементам по индексу. По крайней мере, в своей задаче я пока не вижу повода для использования чего-либо другого.
Это сообщение отредактировал(а) ChipNDale - 12.12.2012, 10:13 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Если внутри всегда будет вектор и итератор в классе храниться не будет, то смысла шаблонизировать класс вообще нет. Достаточно конструктора.
В моем вариант в принципе можно std::vector и не указывать, только тогда между моим вариантом и вариантом borisbn есть одно различие. Конструктор borisbn будет принимать итераторы любого типа, в отличии от моего, который принимает только random access iterator-ы. Ничего не мешает и в моем варианте написать шаблонный конструктор, но раз на данный момент шаблонизировать контейнер не требуется, я бы сделал как показал borisbn. В дальнейшем добавить еще один шаблонный параметр со значением по умолчанию труда не составит. Это сообщение отредактировал(а) azesmcar - 12.12.2012, 10:25 |
|||
|
||||
![]()
|
| Правила форума "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. |