Russian Qt Forum

Qt => Общие вопросы => Тема начата: qtkoder777 от Октябрь 09, 2017, 16:10



Название: Сделать из одного списка QLinkedList два
Отправлено: qtkoder777 от Октябрь 09, 2017, 16:10
Можно ли сделать из QLinkedList два списка из его элементов, не расходуя дополнительную память? То есть поставить указатели новых списков на элементы первого списка. Оператор = для итератора зачем-то есть. Так то видимо работать не будет

Код
C++ (Qt)
QLinkedList<int> L1;
L1 << 1 << 2 << 3 << 4 <<5 << 6;
QLinkedList<int>::iterator it4 = L1.begin()+3; //4
QLinkedList<int> L2; //список L2 должен содержать 1,2,3
L2 << 0 << 0;
L2.begin() = L1.begin();
L2.end() = it4;
QLinkedList<int> L3; //список L3 должен содержать 4,5,6
L3 << 0 << 0;
L2.begin() = it4;
L2.end() = L1.end();


Название: Re: Сделать из одного списка QLinkedList два
Отправлено: ksk- от Октябрь 10, 2017, 07:36
operator+ разве этого не делает?


Название: Re: Сделать из одного списка QLinkedList два
Отправлено: Igors от Октябрь 10, 2017, 13:13
Я так понял что дело не в доп памяти, хочется чтобы оба контейнера содержали одни и те же данные (а не их копии). Если так то никак, эл-т хранится или в одном контейнере или в другом (но не в обоих). Можно хранить сами данные в QList (sizeof(T) > sizeof(void)) а указатели уже в 2 (или сколько угодно) контейнерах. Или один QLinkedList хранит указатели и отвечает за их создание и удаление, а другие нет


Название: Re: Сделать из одного списка QLinkedList два
Отправлено: lit-uriy от Октябрь 11, 2017, 14:09
тут наверное лучше озвучить изначальную (стратегическую) задачу, может её можно решить иным способом.


Название: Re: Сделать из одного списка QLinkedList два
Отправлено: qtkoder777 от Октябрь 12, 2017, 00:28
тут наверное лучше озвучить изначальную (стратегическую) задачу, может её можно решить иным способом.
Нужны кольцевой список и класс полигона на его основе.
http://algolist.ru/ds/basic/ring.php
http://algolist.ru/maths/geom/datastruct.php
Работать с голыми указателями не хочется.


Название: Re: Сделать из одного списка QLinkedList два
Отправлено: qtkoder777 от Октябрь 12, 2017, 00:28
Я так понял что дело не в доп памяти, хочется чтобы оба контейнера содержали одни и те же данные (а не их копии).
Да, именно это и надо