Russian Qt Forum

Qt => Общие вопросы => Тема начата: fabricant от Январь 17, 2012, 11:38



Название: Что вы посоветуете QList или QLinkedList
Отправлено: fabricant от Январь 17, 2012, 11:38
Задача такая нужен контейнер с которого посреди выполнения программы можно удалить элемент который будет где то в середине списка элементов не очень много до 20. что лучше для этого использовать QList или QLinkedList?


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Пантер от Январь 17, 2012, 11:41
QList или QVector. С таким количеством, значения большого не имеет.


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: fabricant от Январь 17, 2012, 11:42
Спасибо


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: fabricant от Январь 17, 2012, 11:44
еще вопрос если я удалю элемент по среди списка там будет пустое место как в массиве?


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Пантер от Январь 17, 2012, 12:00
Нет. Этот элемент удалится и список станет меньше на один элемент.


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: fabricant от Январь 17, 2012, 12:22
Спасибо


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: fabricant от Январь 17, 2012, 13:38
А можно как то через foreach или что то другое получить доступ сразу к 2 QList в которых я точно знаю одинаковое количество элементов


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: mutineer от Январь 17, 2012, 13:46
Ну for(int i = 0;...)


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: fabricant от Январь 17, 2012, 13:49
спасибо


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Exproment от Январь 17, 2012, 16:16
Для операции вставки/удаления лучше QList. Т.к. данные операции будут выполнятся быстрее... QVector - есть умная обертка над массивом. При удалении элемента из середины - массиву необходимо перераспределять память, в то время как в списке - только заменить указатели.

И "для такого количества не имеет значения" - бред... если делать, то правильно! при любом количестве...


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Пантер от Январь 17, 2012, 16:20
И "для такого количества не имеет значения" - бред... если делать, то правильно! при любом количестве...
На таком количестве данных, лист не имеет никаких преимуществ перед вектором. Плюс к тому, QList не стандартный лист, а смесь с вектором.


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Exproment от Январь 17, 2012, 16:28
Знаешь.. как-то в моей фирме было задание создать базу на 100 записей - мол больше НИКОГДА- НИ ПРИ КАКИХ УСЛОВИЯХ не будет... спустя три года(!!!) все-таки пришлось делать реинженирование проекта и сегодня в той самой БД более 1 млн. записей. Не имеет значение размер... QList и QVector были созданы для разных вещей и они при правильном подходе не взаимозаменяемы...


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: mutineer от Январь 17, 2012, 17:00
QList и QVector при определенных условиях (размер хранимого объекта) практически одно и то же


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Exproment от Январь 17, 2012, 17:43
И правда... зачем эти идиоты из Nokia разделяли данные понятия...


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Igors от Январь 17, 2012, 18:03
И правда... зачем эти идиоты из Nokia разделяли данные понятия...
А понятие здесь одно - контейнер прямого доступа. Отличается техникой: храним сами элементы или указатели  Вставка/удаление в QList  - операции далеко не быстрые, просто ощутимо быстрее по сравнению с QVector. Оба не имеют серьезных преимуществ по сравнению с std (хотя и не хуже)


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: kambala от Январь 17, 2012, 19:00
И правда... зачем эти идиоты из Nokia разделяли данные понятия...
данные классы были созданы не Нокией - в то время она к Qt вообще никакого отношения не имела


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Пантер от Январь 18, 2012, 07:23
Знаешь.. как-то в моей фирме было задание создать базу на 100 записей - мол больше НИКОГДА- НИ ПРИ КАКИХ УСЛОВИЯХ не будет... спустя три года(!!!) все-таки пришлось делать реинженирование проекта и сегодня в той самой БД более 1 млн. записей. Не имеет значение размер... QList и QVector были созданы для разных вещей и они при правильном подходе не взаимозаменяемы...
QList и QVector взаимозаменяемы. Поэтому где-нибудь
typedef QVector <someType> SomeTypeContainer
и в будущем изменяешь только эту строчку.


Название: Re: Что вы посоветуете QList или QLinkedList
Отправлено: Igors от Январь 19, 2012, 14:34
QList и QVector взаимозаменяемы. Поэтому где-нибудь
typedef QVector <someType> SomeTypeContainer
и в будущем изменяешь только эту строчку.
Ну не совсем. Напр
Код
C++ (Qt)
QList <QRect> theRect;
..
QRect * R = &theRect[0];
 
С QList я могу спокойно использовать указатель на R, с QVector - только до следующего push_back и др