![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| kleks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Отыскал в интернете несколько шаблонов для работы со списками (создание, добавление, удаление т.д.), слегка переделал под конкретную задачку, и вот что у меня из этого получилось:
Так вот в чём вопрос: я никак не могу понять, почему элементами списка являются только те значения которые я ввёл последними, т.е если я например введу: a=we b=rew a=ggd b=gt a=3f b=ret то когда выведится список, получится: a=3f b=ret a=3f b=ret a=3f b=ret Заранее благодарен... Это сообщение отредактировал(а) kleks - 24.10.2005, 23:02 |
|||
|
||||
| OKaDO |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 28.6.2005 Репутация: нет Всего: нет |
Извини конечно. Но зачем искать в инете шаблоны списка, если тебе все дано.
Библиотеки list.h и algorithm.h помогут решить все твои проблемы. |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
kleks
Согласен. Другое дело что ты можешь не знать STL,но тогда весь смысл собственного написания списков в том что бы понять что это такое и набраться опыта,но дело твое.Теперь по коду: 1.В функции ShowAll() допущена ошибка. Несмотря на то что если список пуст прога выводит сообщение об этом, после этого она пытается вывести элементы а и b хотя их нет 2.В программе совершенно отсутствуют деструкторы ,а при этом динамическисоздаваемые объекты присутствуют>происходит утечка памяти(хотя я могу быть не прав т к внимательно код не смотрел.) 3.Собственно почему выводит одни и те жи строки 3(2) раза. Ответ прост: В классе CData определены два указателя на строки,а в конструкторе эти указатеди приравниваются указателям на передаваемые строки. Фактически ты в каждом новом обьекте CData вместо того чтобы создать 2 новые строки приравниваешь указатели на эти строки указателям на строки a и b из main() вместо того чтобы создать новый=> После того как ты изменяешь строки a и b ты фактически не трогая все обьекты класса CData изменяешь их "показания".Лечения,надеюсь понятно. ЗЫ Пишу безграмотно, сам знаю.(проверил в ворде) -------------------- Жизнь - печальная штука. |
|||
|
||||
| kleks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Что-то я пытался это исправить, но как-то всё не получаетя...туговато у меня со списками (да и с С++ в целом тоже, пока)...Вы бы могли написать непосредственно сам код, исправляющий эту ошибку для данного списка... |
|||
|
||||
| kleks |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Помогите пожалуйста, ну очень хочется разобраться!!
|
|||
|
||||
| nikitao |
|
||||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Ну смотри надо просто изменить конструктр класса CData
Еще надо в класс CData прописать деструктор
Вот должно помочь.А вообще когда STL изучишь и со списками и со строками гемора не будет. Это сообщение отредактировал(а) nikitao - 27.10.2005, 13:17 -------------------- Жизнь - печальная штука. |
||||
|
|||||
| Neitron |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 580 Регистрация: 3.10.2005 Где: Москва Репутация: 2 Всего: 5 |
kleks
Как сказал бы дядя Бьерн. Юзайте STL. -------------------- Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей. Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ |
|||
|
||||
| nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Neitron ,вот в этом и состоит порочный круг.В STL все есть но пока собственные списки не напишишь и STL не поймешь(ИМХО).
-------------------- Жизнь - печальная штука. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |