Название: QLinkedList Отправлено: coll3ctor от Март 16, 2011, 21:12 опишите пожалуйста основные принципы работы с ним.
Понимаю что через <> можно передать параметр, в узлах которого будет он хранится. Теперь вопрос: при вызове конструктора QLinkedList<T> list1(); - создаётся пусто список с первым узлом и указателем на NULL или как ? Название: Re: QLinkedList Отправлено: serg_hd от Март 16, 2011, 22:40 Это, видимо, аналог std::list<T>, в ассистенте всё доступно и с примерами описано. Условно "T" - это любой заданный тобою тип: QString, int, char, MyType и т.п. Поэтому так "QLinkedList<T> list1()" создавать его не надо, если, конечно, T - не название одного из твоих классов.
Код В "<>" указываешь хранимый в связном списке тип, сам класс списка организован как шаблонный, что почти закон для подобных вещей. Название: Re: QLinkedList Отправлено: coll3ctor от Март 17, 2011, 08:09 Это, видимо, аналог std::list<T>, в ассистенте всё доступно и с примерами описано. Условно "T" - это любой заданный тобою тип: QString, int, char, MyType и т.п. Поэтому так "QLinkedList<T> list1()" создавать его не надо, если, конечно, T - не название одного из твоих классов. Код В "<>" указываешь хранимый в связном списке тип, сам класс списка организован как шаблонный, что почти закон для подобных вещей. это-то я уж понимаю :) Код при этой записи создастся список с 3 узлами, верно ? Название: Re: QLinkedList Отправлено: SimpleSunny от Март 17, 2011, 09:39 да
Название: Re: QLinkedList Отправлено: coll3ctor от Март 17, 2011, 10:51 да но там QString. Вот я пишу: Код: Kitap p1("Ivanov", "C_P_P", 1999, "EXMO", 16); Создался связный список. как мне создать узлы и заполнить их ? В Доке читал - про это там нету... зы Код: class Kitap Название: Re: QLinkedList Отправлено: Пантер от Март 17, 2011, 10:55 void QLinkedList::append ( const T & value )
void QLinkedList::push_back ( const T & value ) void QLinkedList::push_front ( const T & value ) Название: Re: QLinkedList Отправлено: Igors от Март 17, 2011, 13:05 1) "Связный список" есть "масло масляное", т.к. не существует "несвязных" списков.
2) "Узел" обычно используется для дерева, для списка этот термин смысла не имеет 3) Не лучше ли сначала сделать простенький список самому на С/С++ ? Например Код Изучение готовых классов хорошо если Вы уже умеете так делать и Вам это уже неинтересно. А иначе можно оказаться в положении "обезьяны без кармана" знающей классы :) Название: Re: QLinkedList Отправлено: coll3ctor от Март 17, 2011, 21:46 1) "Связный список" есть "масло масляное", т.к. не существует "несвязных" списков. 2) "Узел" обычно используется для дерева, для списка этот термин смысла не имеет 3) Не лучше ли сначала сделать простенький список самому на С/С++ ? Например Код Изучение готовых классов хорошо если Вы уже умеете так делать и Вам это уже неинтересно. А иначе можно оказаться в положении "обезьяны без кармана" знающей классы :) как раз подумывал об этом, и мне это тоже советовали :) тут как раз проблема возникает: я создаю объект своего класса (Kitap), последовательно создаю (к примеру) 3 узла. Засовываю в узлы свои объекты (сорри за узлы, привык уж), и выясняется, что чтобы заполнить таблицу полями из узлов я должен обращаться к полям своего класса. То есть вытащить поля из узла я не могу => пропадает смысл задания, которое мне дано на семестр... зы класс связного списка я уже реализовывал, ещё в позапрошлом семестре в консольной форме. если моя реализация класса списка поможет решить проблему (вышеизложенную), тогда я последую вашему совету. что скажете ? Название: Re: QLinkedList Отправлено: Igors от Март 17, 2011, 23:02 ..и выясняется, что чтобы заполнить таблицу полями из узлов я должен обращаться к полям своего класса. То есть вытащить поля из узла я не могу => пропадает смысл задания, которое мне дано на семестр... Ну если Вы делали, то знаете что список предназначен для последовательного перебора, элемент за элементом. Напр для примера вышеКод То же самое с QLinkedList, только через итераторы (begin() и.т.п) Название: Re: QLinkedList Отправлено: coll3ctor от Апрель 05, 2011, 20:59 какой ф-й добавлять новый узел в список?
если insert, то первый аргумент как задать для нужного мне места? Название: Re: QLinkedList Отправлено: alexman от Апрель 05, 2011, 22:44 list.insert( list.begin() + i, t );
Название: Re: QLinkedList Отправлено: coll3ctor от Апрель 07, 2011, 11:37 list.insert( list.begin() + i, t ); а удалить как? list.remove(T) - не пойму как ей пользоваться.в цикле итератора по номеру определить нужный элемент, сравнить его и удалить чтоли? Название: Re: QLinkedList Отправлено: m_ax от Апрель 07, 2011, 12:20 Цитировать а удалить как? list.remove(T) - не пойму как ей пользоваться.в цикле итератора по номеру определить нужный элемент, сравнить его и удалить чтоли? Есть removeFirts, removeLast, removeOne и removeAll. *Вру, есть оказывается просто remove.. offtop А почему название класса Kitap, а не Book? Ведь все поля у вас на английском, а название самого класса на татарском? Название: Re: QLinkedList Отправлено: Igors от Апрель 07, 2011, 13:01 а удалить как? list.remove(T) - не пойму как ей пользоваться.в цикле итератора по номеру определить нужный элемент, сравнить его и удалить чтоли? Хотя прогресс есть ("итератор" и уже "элемент" вместо "узел"), посты все равно производят гнетущее впечатление. Ну зачем (из-под палки) заниматься тем к чему душа явно не лежит? Наймите кого-нибудь вместо того чтобы мучать кошку :'( Название: Re: QLinkedList Отправлено: coll3ctor от Апрель 07, 2011, 23:21 Цитировать а удалить как? list.remove(T) - не пойму как ей пользоваться.в цикле итератора по номеру определить нужный элемент, сравнить его и удалить чтоли? Есть removeFirts, removeLast, removeOne и removeAll. *Вру, есть оказывается просто remove.. offtop А почему название класса Kitap, а не Book? Ведь все поля у вас на английском, а название самого класса на татарском? просто :) я мог назвать его и Soplya. Неравнозначно ) так как удалить?) в итоге я сделал через метод erase ... Название: Re: QLinkedList Отправлено: coll3ctor от Апрель 07, 2011, 23:21 а удалить как? list.remove(T) - не пойму как ей пользоваться.в цикле итератора по номеру определить нужный элемент, сравнить его и удалить чтоли? Хотя прогресс есть ("итератор" и уже "элемент" вместо "узел"), посты все равно производят гнетущее впечатление. Ну зачем (из-под палки) заниматься тем к чему душа явно не лежит? Наймите кого-нибудь вместо того чтобы мучать кошку :'( это намёк?) у меня это семестровое задание по ооп :) вот и делаю.2 курс, рановато ещё нанимать :) Название: Re: QLinkedList Отправлено: Авварон от Апрель 07, 2011, 23:30 БТВ, я на 2м курсе тоже тупой был
Название: Re: QLinkedList Отправлено: Пантер от Апрель 08, 2011, 07:19 Потом наточили? ;D
Название: Re: QLinkedList Отправлено: coll3ctor от Апрель 13, 2011, 08:11 Теперь мне нужно загрузить список из файла :) в файл записывать у меня получилось, благодаря примерам ассистанта, а вот загрузить его из файла проблематично... компилятор ругается на
Код: in >> list; Код: void artur :: openButton() Название: Re: QLinkedList Отправлено: alexman от Апрель 13, 2011, 08:34 Покажи как переопределил?
Название: Re: QLinkedList Отправлено: coll3ctor от Апрель 13, 2011, 09:14 Покажи как переопределил? что переопределил?) я имел ввиду в классе QLinkedList присутствует перезгрузки: Код: QDataStream & operator<< ( QDataStream & out, const QLinkedList<T> & list ) или их нужно переопределять под свой контейнерный тип данных ? глупо как то... Название: Re: QLinkedList Отправлено: coll3ctor от Апрель 17, 2011, 09:15 Покажи как переопределил? что переопределил?) я имел ввиду в классе QLinkedList присутствует перезгрузки: Код: QDataStream & operator<< ( QDataStream & out, const QLinkedList<T> & list ) или их нужно переопределять под свой контейнерный тип данных ? глупо как то... с этим разобарался.перегрузил для своего класса эти операторы и всё заработало. Следующий вопрос: мне нужно по критериям из полей элементов списка вывести (согласно критериям) соответствующие элементы. кто-нить подскажите пожалуйста примерный алгоритм на это... |