Russian Qt Forum
Ноябрь 27, 2024, 10:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4   Вниз
  Печать  
Автор Тема: QList и QVector  (Прочитано 38022 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #30 : Август 28, 2010, 11:00 »

Почитаю еще только... Улыбающийся
Посмотрите еще книги:
  Николай Джосьютис. C++ Стандартная библиотека. Для профессионалов.
  Бьерн Страуструп. Язык программирования C++. Специальное издание.
Думаю, это будет полезнее, чем ковыряться в исходниках даже такой хорошей штуки, как Qt. Средства стандартной библиотеки эффективнее любых других по определению...
Если упоминаем Библию, давайте будем более точны. Там написано что стандартная библиотека должна "обеспечивать достойную конкуренцию" другим разработкам, но нигде не утверждается об ее  абсолютной эффективности.

Мое личное мнение: эффективнее тот инструмент который программист лучше знает, понимает и применяет с толком. Огромное количество "говнокода" связано именно с STL и совсем не потому что он плох. Свалиться в изучение const iterator и.т.п очень легко, ведь это выглядит довольно круто  Улыбающийся Дальше все идет по накатанной дорожке "знаю что давать на вход - получу такой-то результат". А как это работает? А чего стоит удобство использования? А есть ли лучшее решение? Увы, в большинстве случаев STL-щику очень не нравится когда разговор заходит об этом  Улыбающийся

Так что рекомендовать STL надо осторожно
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #31 : Август 28, 2010, 12:23 »

Но тем не менее STL есть везде, где есть стандартный С++ компилятор, и она работает.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #32 : Август 28, 2010, 12:42 »

Но тем не менее STL есть везде, где есть стандартный С++ компилятор, и она работает.
Ну что "есть" везде - на то она и включена в стандарт. А вот используется/применяется далеко не везде. Напр. когда-то приходилось заниматься 3ds, так в ихнем SDK никакой STL почему-то не наблюдалось. Да и Qt использует "мелкие вкралления STL" - не более того  Улыбающийся

А насчет "работает" - так то на нормальной платформе/компиляторе. А на MSVC удовольствие ниже среднего
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #33 : Август 28, 2010, 13:47 »

тем более что реализации stl могут отличаться от компилера к компилеру
Записан
usr00210
Гость
« Ответ #34 : Август 29, 2010, 15:57 »

тут еще про сложность алгоритмов еще кажется не говорили. для QList сложность O(1). так что с точки зрения производительности лучче использовать QList чем QVector. QVector еще удобнее (спорный момент) тем, что с его элементами можно работать как с обычным массивом в С, например передавать в функции в виде обычных С массивов.
Записан
Alex_cs_gsp
Гость
« Ответ #35 : Август 29, 2010, 16:57 »

Да, а для QVector по твоему какая сложность? Удобный/неудобный это диван или кресло может быть, тут нужно подходит или не подходит.
« Последнее редактирование: Август 29, 2010, 16:59 от Alex_cs_gsp » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #36 : Август 29, 2010, 17:22 »

для QList сложность O(1).

Не О(1), а Amort О(1) и это при вставке в начало. Во всех остальных операциях контейнеры равны.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Alex_cs_gsp
Гость
« Ответ #37 : Август 29, 2010, 17:54 »

Чем вставка в начало QList отличается от вставки в начало QVector?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #38 : Август 29, 2010, 17:55 »

тем что у кулиста есть область спереди, а у вектора - нет
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #39 : Август 29, 2010, 18:31 »

Немного про структуру контейнеров можно почитать здесь: http://doc.trolltech.com/qq/qq19-containers.html
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Alex_cs_gsp
Гость
« Ответ #40 : Август 29, 2010, 18:33 »

А чё в кувекторе не сделали? Одну лишнюю переменную хранящую сдвиг пожалели, вместо нулевых указателей для кулиста?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #41 : Август 29, 2010, 18:36 »

вектор - это вектор, просто массив с динамической длинной.
кулист - это список, то есть структура, ориентированная на аппенд/препенд/инсерт
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #42 : Август 29, 2010, 19:15 »

QVector еще удобнее (спорный момент) тем, что с его элементами можно работать как с обычным массивом в С, например передавать в функции в виде обычных С массивов.
Да, c QList так не получится. Но с др. стороны QVector (по крайней мере на некоторых платформах) не перешагнет через барьер 1Gb, а QList пожалуйста
Записан
Alex_cs_gsp
Гость
« Ответ #43 : Август 29, 2010, 21:13 »

От лукавого это все. Если нужно писать выскопроизводительный код, например серверный или для автоматизированных систем, то это уже не для Qt. Для пользовательских программ учет времени, которое затрачивается на разыменование указателя нет смысла учитывать.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #44 : Август 29, 2010, 21:32 »

чем же скорость работы Qt в плане контейнеров меньше того же буста? Другое дело, что таскать Qt и не использовать многие фичи оттуда, которые в таких приложениях не нужны, смысла нет
Записан
Страниц: 1 2 [3] 4   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.109 секунд. Запросов: 23.