Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Волновой алгоритм. |
Автор: FasTer 2.7.2006, 18:03 | ||
Здравствуйте. пишу прогу и там в алгоритме я в цикле использую свой класс типа int. потом в стандартных классах я использую очередь Queue. далее Int - мой класс. поле класса int theInt; конструктор только присваивает значение и есть функция присваивания. далее
теперь когда я 2 раза использую get cout<<q.get()<q.get(); мне два раза возращает 5. Подскажите, в чем может быть дело... |
Автор: Romikgy 2.7.2006, 18:14 |
FasTer, исходник весь в студию |
Автор: FasTer 2.7.2006, 19:11 | ||||||
usr^) те гык%![]() файл .h с моим классом его назвать summer.h
теперь сам .сpp:
а вот файл матрицы tree7.txt:
и вот когда указываю путь от 1 до 7 - то работает, а когда от 7 до 1 не работает, тк в очередь вносит 1 вершину. вот собстна не понимаю ,почему так. Извиняюсь за некорректный путь, ну это и не столь важно, тк это уже не алгоритм волновой ![]() |
Автор: FasTer 3.7.2006, 12:29 |
Up! |
Автор: Sardar 3.7.2006, 13:07 |
FasTer, а ты не подумал что в очередь добавляеться обьект по ссылке? Дважды закинув один и тот же обьект ты на самом деле закинул две ссылки на один обьект. Возьми нитку и яблоко. Одна длинная нитка это твоя очередь. Теперь привяжи к яблоку короткую нитку, другим концом к нитке-очереди. Надкуси яблоко. Привяжи ещё одну нитку к яблоку и другим концом к очереди. Глянь на это художественное произведение, поудивляйся чуду. |
Автор: FasTer 3.7.2006, 18:35 |
zss, Так а что мне делать? по правилам же я написал get, взять. я использовал функцию printOn(cout); и выдает пустую очередь. Пытался отслеживать. Добавлено @ 18:44 Я попробывал по-разному. и вот что получил: когда я создаю Int q,w; Queue a; q.puInt(1); w.putInt(2); a.put(q); a.put(w); a.printOn(cout); \\ тут получаю 1 и 2 в a дальше изменяю w и тогда в a автоматически получается изменение ![]() а как тогда мне сделать так, чтобы использовать в цикле адгоритма переменную типа Int? массив создать? |
Автор: Earnest 4.7.2006, 06:40 |
Ты бы лучше вместо своего путанного кода показал, что такое Queve. Действительно, возникает подозрение, что объекты туда не копируются, а только их ссылки. |
Автор: FasTer 4.7.2006, 18:25 |
Romikgy, код в студии... Earnest. так я и спрашиваю, из-за чего в очереди хранится указатель элемента моего класса,и что можно с этим сделать... ![]() |
Автор: Romikgy 4.7.2006, 20:42 |
![]() а кто класс писал? ты или нет? |
Автор: Earnest 4.7.2006, 20:49 |
Очередь откуда взялась? Что это за класс? Что толку смотреть на твой код, если неизвестно, как очередь устроена. Давай показывай реализацию. Это явно не std::queve, т.е. в последней копии объектов хранятся. |
Автор: FasTer 6.7.2006, 08:43 | ||||
Earnest, Что толку смотреть на твой код, если неизвестно, как очередь устроена. Давай показывай реализацию. А что именно про куеуе? Romikgy, Я писал класс. у тебя какие-то сомнения? или что-то там не понятно? что сказать про класс? Добавлено @ 08:50 Использую СLassLib, вот файл куеуе
вот класс декуе
это все из classlib include. вот тут описаны очередь с 2-й очередью... ну это же стандартно... |
Автор: Romikgy 6.7.2006, 09:01 |
откель тогда вопросы такие , что хранится в указателях? ты же писал, ты и придумывал что там должно хранится! |
Автор: FasTer 6.7.2006, 20:30 |
В каких указателях? я создаю Cur - элемент моего класса. его поле - int. и эту величину заношу в очередь. ... Romikgy, А у тебя код вообще работает этот, если запускал, ты настроил Вс для работы с classlib? У меня мой алгоритм работает на циклических графах, а вот на дереве не работает, если идти из листка в корень. а если из корня в листок - то работает, тк постоянно одна вершина в очереди хранится и извелкается потом. Если не можете помочь, то не нужно говорить, что сам написал, сам разбирайся. я бы и не постил тему если бы мог сам справиться, и не писал бы тут на 3 км. Я наследовал все вируальные классы от сортабла. чтобы мой класс был не вируальным... |
Автор: Earnest 7.7.2006, 06:53 |
Похоже, в очереди действительно хранятся указатели: Хотя внутренностей контейнера все равно не видно, но настораживает, что функция put принимает неконстантную ссылку... и возвращает неконстантные ссылки... Да и сам тип Object - это что? Ты бы почитал документацию, если библиотека стандартная борландовская, то должно быть где-то описано, как с ней работать. Но я бы выкинула это безобразие с дгоисторической семантикой и использовала stl. FasTer, чем обижаться, ты бы лучше посмотрел, что ты пишешь - можно подумать, что весь свет пишет исключительно на борланде и все должны знать, что такое сортабл и прочее... и какое это имеет отношение к очередям |