1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|||||||||||
1 | |||||||||||
Как реализовать работу со списком строк и списком цифр в классе List?01.09.2010, 15:42. Показов 2821. Ответов 16
Метки нет (Все метки)
Добрый день!
Проблема такая Есть класс-список:
Образно должно это выглядеть так: При запуске в окошке появляется надпись - Введите 5 строк - вводим их, После этого появляется надпись - Введите 5 цифр - вводим их, После этого снова появляется надпись - Какой из 2-х списков отобразить ? (допустим N1 или N2) И, в зависимости от того, какое из 2-х значений мы набираем (N1 , N2) на экран должен выводиться один из 2-х введенных нами ранее списков. Подскажите, как это организовать? Если возможно, с кодом! Буду очень благодарен . P.S. Пытался применить подобный код
0
|
01.09.2010, 15:42 | |
Ответы с готовыми решениями:
16
Десятичное число, представленное списком десятичных цифр, представить списком двоичных разрядов Реализовать работу со списком дел на месяц List (Написать программу для работы со списком и реализовать следующие операции над списками) Как сделать цикл со списком имен файлов и списком для их переименования |
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
01.09.2010, 16:02 | 2 | |||||
hatter, это реализуется с помощью шаблонов. Пример шаблонного класса и шаблонной функции:
1
|
1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|
01.09.2010, 16:09 [ТС] | 3 |
Так в этом вся и проблема! Я потому и обратился, т.к не понимаю как этот шаблон создать! Конкретно для моего класса и с такой функцией списков строк и цифр.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
01.09.2010, 16:11 | 4 |
Пример шаблонов - см. выше. А вообще я бы порекомендовал почитать какую-нибудь книжку по С++, чтобы не возникало таких вопросов.
1
|
1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|
01.09.2010, 16:15 [ТС] | 5 |
Передо мной их 2 лежит - читал! Поверь, я не стал бы обращаться, если бы смог разобраться самостоятельно.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|||||||||||
01.09.2010, 16:22 | 6 | ||||||||||
Сообщение было отмечено Памирыч как решение
Решение
Вот тебе еще пример, чтобы было легче разобраться - шаблонный стек:
my_stack.hpp
Твой список хранит тип int в поле value. Тебе нужно для value заменить тип int на шаблонный параметр.
1
|
1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|
01.09.2010, 16:26 [ТС] | 7 |
Сложность в понимании организации шаблона из класса список
ну то-есть я не могу понять, при моей конкретной задаче я должен реализовать работу со списком строк и цифр в самом классе? а потом уже создать файл шаблона и связать его с классом-список? Я саму суть не могу понять, как они связаны должны быть.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
01.09.2010, 16:28 | 8 |
Кстати, итератор - это такой шаблон проектирования, который предоставляет доступ к элементам обобщенного контейнера, не заостряя внимание пользователя на внутренней структуре контейнера. В языке С++ под итератором можно упрощенно понимать указатель. Но вот самому писать класс итераторов я бы на твоем месте не стал. Тема очень сложная, тем более что тебе не удалось понять шаблоны. Если уж так хочется использовать stl-подобные итераторы в своем классе, то самый простой способ - это сделать агрегацию stl-контейнера в своем классе
1
|
1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|
01.09.2010, 16:34 [ТС] | 9 |
Да, с пониманием структур у меня действительно плохо!
я логически представляю себе как это все должно выглядеть, а вот когда дело касается написания - возникают проблемы. Спасибо тебе за оказанную помощь! Буду разбираться в примерах - что-нибудь, да получится!
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
01.09.2010, 16:41 | 10 | |||||
Какой файл шаблона? Ты должен создать шаблонный класс списка, в котором тип элемента списка должен быть шаблонным параметром.
Связываение экземпляра шаблонного класса с "файлом шаблона", если я правильно тебя понял, происходит при создании данного экземпляра с помощью явного указания шаблонного параметра. Вот так должна выглядеть упрощенная структура твоего класса:
0
|
1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|
01.09.2010, 16:50 [ТС] | 11 |
то есть я в своем классе использую явный указатель шаблонного параметра, переписываю в него все то, что есть в моем исходном классе, по примеру который ты привел. или я снова неверно понял?
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
01.09.2010, 16:58 | 12 | |||||
Под явным указанием шаблонного параметра я имел в виду указание типа списка при создании экземпляра класса список. Т.е. запись вида:
Ну и естественно, нужно заменить тип int для всех методов класса, которые возвращают значение элемента списка (в возвращаемом значении метода) или добавляют новый элемент (в типе параметра метода - значения нового элемента)
1
|
1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|
01.09.2010, 17:14 [ТС] | 13 |
Понял! И там же, насколько я понимаю, я должен буду реализовать метод для списка строк и цифр, суть которого я описал вначале, так?
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
01.09.2010, 17:38 | 14 |
Нет, так делать не нужно. Вся суть в том, что шаблонные классы являются обобщенными, т.е. не зависят от того, элементы какого типа они должны хранить. И методы таких классов тоже должны быть обобщенными. Когда будешь писать свой класс, пытайся думать о нем не как о списке строк или цифр, а как о списке каких-либо элементов. Не важно, каких. Посмотри мою реализацию стека: в ней нет ничего про работу с числами, строками и т.д. Но тем не менее, этот стек может работать и с целыми числами, и с дробными, и со строками, и даже с объектами определенных тобою или кем-нибудь другим классов. Выбор объектов, которые должен хранить твой шаблонный класс, происходит в момент создания экземпляра твоего класса. На примере стека: my::stack<int> stk; - я создаю экземпляр класса stack, находящегося в пространстве имен my, указывая тип шаблонного параметра - int. Но с тем же успехом я мог создать экземпляр стека, хранящего элементы типа float, double, char, std::string и т.д.
1
|
1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|
01.09.2010, 17:45 [ТС] | 15 |
ааа! хитро'!
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
01.09.2010, 17:46 | 16 |
hatter, в том весь смысл
1
|
1 / 1 / 1
Регистрация: 01.09.2010
Сообщений: 143
|
|
03.09.2010, 22:03 [ТС] | 17 |
Все, разобрался! Все заработало! Получилось! Спасибо огромное за помощь и советы, Nameless One !
0
|
03.09.2010, 22:03 | |
03.09.2010, 22:03 | |
Помогаю со студенческими работами здесь
17
Как из таблицы со списком, когда аудитории заняты, собрать таблицу со списком когда они свободны Вывод записей в поле со списком в зависимости от другого поля со списком Фильтрация поля со списком в зависимости от двух других полей со списком Вывести две таблицы со списком городов и одну со списком их координат Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |